Проблемы с компиляцией OpenCV для Linux на ноутбуке Optimus с использованием шмеля

2424
ali_m

ОК, у меня довольно специфический вопрос по Optimus / CUDA / drivers:

  • Я использую Ubuntu 12.04 на Acer Aspire 5750G. Этот ноутбук оснащен графическим процессором GT540M с поддержкой CUDA, но в нем также есть Optimus, поэтому для его использования мне нужно использовать шмеля

  • Следуя этим инструкциям, я установил более свежие драйверы от NVIDIA ppa:ubuntu-x-swat/x-updates, а затем установил шмель

  • Теперь я могу запускать вещи на GPU просто отлично ( optirun glxspheresработает как положено)

  • Тем не менее, я пытаюсь что-то скомпилировать (OpenCV-2.4.2) с поддержкой времени выполнения CUDA, и я сталкиваюсь с ошибкой компилятора, которая, по-видимому, связана с отсутствием установленных драйверов для разработчиков NVIDIA CUDA

Я хочу знать, возможно ли использовать шмеля в сочетании с драйверами разработчика NVIDIA. Безопасно ли использовать инсталлятор, скачанный со страницы разработчика NVIDIA, или это будет полностью испортить шмеля? Есть ли лучший способ установить драйверы разработчика? Я искал современный PPA, но не смог найти.

3

1 ответ на вопрос

4
ali_m

Итак, получается, что мне не нужно использовать драйверы разработчика для компиляции OpenCV!

Я как-то испортил свои программные источники, так что я больше не обновлялся ppa:ubuntu-x-swat/x-updates. Когда я установил, что я был в состоянии обновить свои драйверы NVIDIA в 304.43с 295.49. Я думаю, что это могло быть решающим фактором для компиляции OpenCV, хотя мне также пришлось изменить один make-файл, чтобы он работал.

Если кто-то заинтересован в том же, я в основном следовал инструкциям здесь . Перефразировать:

  • sudo apt-get install следующие зависимости модуля, если у вас их еще нет:

    libopencv-dev build-essential checkinstall cmake pkg-config libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libv4l-dev

  • Загрузите последнюю версию OpenCV отсюда, а затем:

    tar -xvf OpenCV-<version#>.tar.bz2 cd OpenCV-<version#>/ mkdir build cd build 
  • Запустите, cmakeчтобы настроить файл сборки. Вам нужно будет передать cmakeнабор параметров, чтобы указать, как вы хотите, чтобы OpenCV был собран. Точные параметры будут зависеть от вашей системы - вы можете получить представление о доступных параметрах, посмотрев на них ../CMakeLists.txt. Точная команда, которую я использовал, была:

    cmake -D WITH_QT=ON -D WITH_XINE=ON -D WITH_OPENGL=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=ON BUILD_TESTS=ON ENABLE_SSE3=ON ENABLE_SSE4.1=ON ENABLE_SSE4.2=ON WITH_CUDA=ON .. 

    У меня были особые проблемы, когда он компилировался с поддержкой CUDA runtime ( WITH_CUDA=ON), отсюда и исходный вопрос о драйверах.

  • cmakeсоздаст файл с именем CMakeCache.txt. Я обнаружил, что мне пришлось изменить этот файл, как описано здесь, чтобы избежать ошибок при связывании libcuda.so.

    Найдите строку, которая начинается:

    CUDA_CUDA_LIBRARY:FILEPATH= 

    И добавить путь libcuda.so, в моем случае:

    CUDA_CUDA_LIBRARY:FILEPATH=/usr/lib/nvidia-current/libcuda.so 
  • Теперь вы должны иметь возможность запустить makeдля компиляции (занимает некоторое время ...), а затем sudo make installустановить

Я надеюсь, что кто-то найдет это полезным.

Добро пожаловать в Супер пользователя! Хотя это может теоретически ответить на вопрос, [было бы предпочтительнее] (http://meta.stackexchange.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. Другими словами, перефразируйте эти две ссылки и просто приведите свой источник. Это помогает предотвратить гниение ссылок, если эти сайты не работают или URL-адрес меняется Canadian Luke 11 лет назад 0
Ну, ладно, наверное. Я не хочу этого делать, потому что это информация, которая очень косвенным образом связана с темой моего первоначального вопроса. ali_m 11 лет назад 0
Но если сайт отключается, средний пользователь может не знать, как вы это сделали, и это устраняет необходимость в вопросе / ответе на сайте. Canadian Luke 11 лет назад 0
Хорошо, я отредактировал свой ответ, чтобы перефразировать содержание связанных страниц, и я изменил тему моего исходного вопроса, чтобы лучше соответствовать содержанию ответа. ali_m 11 лет назад 0
Выглядит отлично! +1 Canadian Luke 11 лет назад 0

Похожие вопросы