This post is about the experience to compile OpenCV on Ubuntu 14.04. It was quite hard to find the correct information and dependencies to make the project, and the following error might be happened:

/usr/bin/ld.bfd.real: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1′ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libopencv_videoio.so.3.0.0] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
Fix the compiling problem

Here are the steps to fix the problem for compiling OpenCV:

# Removing any pre-installed ffmpeg and x264

sudo apt-get -qq remove x264 libx264-dev ffmpeg
sudo apt-get --purge remove libav-tools
sudo apt-get --purge autoremove

# Install dependencies

sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm 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 libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

# Install ffmpeg

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --enable-nonfree --enable-pic --enable-shared
make
sudo make install

# Install OpenCV

git clone https://github.com/Itseez/opencv.git opencv
cd opencv
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

make -j2
sudo make install

3 thoughts on “Compile OpenCV (and ffmpeg) on Ubuntu Linux

  • December 28, 2017 at 9:53 AM
    Permalink

    sir, please help ” Unable to stop the stream: Inappropriate ioctl for device ” this error still shows after going through your process.

    Reply
    • February 19, 2018 at 5:04 AM
      Permalink

      Hi . Don’t know if it’s still relevant, I really hope you’ve solved it by now.
      If you’ve followed the above instructions, you’ve installed the ffmpeg library.
      You should only add -D WITH_FFMPEG=ON on the cmake stage. i.e.

      Reply
  • February 10, 2018 at 10:39 PM
    Permalink

    Thank you so much for this article, resolve my long time pending issue of ffmpeg

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *