Итак, получается, что мне не нужно использовать драйверы разработчика для компиляции 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 (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
для установки
Я надеюсь, что кто-то найдет это полезным.