#opencv #ubuntu #ffmpeg #compilation #libav
Вопрос:
При сборке OpenCV на Ubuntu 18 у меня возникает следующая ошибка:
/usr/bin/ld: /home/ubuntu/ffmpeg_build/lib/libavcodec.a(vc1dsp_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pw_9' can not be used when making a shared object; recompile with -fPIC
Та же процедура использовалась для работы на той же машине. По-видимому, установлен весь необходимый пакет.
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.4.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.4.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
mkdir -p ~/opencv-4.4.0/build
cd ~/opencv-4.4.0/build
CUDA_ARCH_BIN=7.5
cmake
-D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_C_COMPILER=/usr/bin/gcc
-D CMAKE_INSTALL_PREFIX=/usr/local
-D INSTALL_PYTHON_EXAMPLES=OFF
-D INSTALL_C_EXAMPLES=OFF
-D WITH_TBB=ON
-D WITH_CUDA=ON
-D BUILD_opencv_cudacodec=OFF
-D ENABLE_FAST_MATH=1
-D CUDA_FAST_MATH=1
-D WITH_CUBLAS=1
-D WITH_V4L=ON
-D WITH_QT=OFF
-D WITH_OPENGL=ON
-D WITH_GSTREAMER=ON
-D OPENCV_GENERATE_PKGCONFIG=ON
-D OPENCV_PC_FILE_NAME=opencv.pc
-D OPENCV_ENABLE_NONFREE=ON
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.4.0/modules
-D PYTHON_EXECUTABLE=/usr/bin/python3
-D WITH_CUDNN=ON
-D OPENCV_DNN_CUDA=ON
-D CUDA_ARCH_BIN=$CUDA_ARCH_BIN
..
Ошибка возникает при выполнении команды make make -j 15
.
Дайте мне знать, если вам понадобится какая-либо другая информация
Комментарии:
1. Он пытается связать OpenCV со статической версией libavcodec. Я вижу, что вы используете пользовательскую сборку ffmpeg, как вы ее скомпилировали?
2. Честно говоря, я понятия не имею. Как я могу его удалить?
3. Проверьте, есть ли у вас какой-либо путь, связанный с «/home/ubuntu/ffmpeg_build/lib/» в вашей переменной LD_LIBRARY_PATH env. Вы можете проверить это, запустив эту команду bash: echo $LD_LIBRARY_PATH
4. если такой путь существует, вероятно, вы установили его в своем файле .bashrc. Таким образом, вы можете открыть его, запустив на своей консоли: gedit ~/.bashrc, а затем выполнить поиск «экспорт LD_LIBRARY_PATH=» на нем. Затем вам следует удалить запись «/home/ubuntu/ffmpeg_build/lib/», сохранить файл и запустить новый терминал.