Ошибка OpenCV ffmpeg при компиляции в Ubuntu

#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/», сохранить файл и запустить новый терминал.