[FFmpeg-devel] [PATCH v12] - Added Turing codec interface for ffmpeg
Saverio.Blasi at bbc.co.uk
Wed Jul 5 17:56:16 EEST 2017
>>So I did try to build this, but the ffmpeg configure check apparently fails at picking it up and dumps 3.5MB of C++ linker errors into the config.log. And I have no idea why it does that. configure actually prints "ERROR: libturing not found using pkg-config", but the .pc part seems to be ok, but maybe the check_cpp_condition call tries to link.
>>The first error is:
>>lib/libturing.a(encode.cpp.o): In function `operator<<(std::ostream&, res
idual_coding)': encode.cpp:(.text+0xf6e): undefined reference to `std::basic_ostream<char, std::char_traits<char>
>>& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
>>The .pc file actually contains -lstdc++. Going by the linker error, this is probably what's needed?
>>I have no idea why this error happens, but it seems a deal breaker. I'm using gcc on Debian, and built libturing with a standard cmake invocation.
Thanks a lot for trying this out. I am struggling a bit to replicate this error. I am using Ubuntu in my local machine but I have also just tried with a clean Debian installation in a Docker container. The Dockerfile clones both ffmpeg and Turing repositories, applies the patch as from the email, builds and installs the Turing library in a specific folder, and finally configures and builds ffmpeg succesfully. I am not quite sure what the difference could be with your workflow. Which version of gcc are you using? I have tested this with gcc 6. .I have also tried with an old Linux machine with 4.8.2 and that works as well. If I understand correctly, you are able to successfully build Turing and the problem happens later when configuring ffmpeg, is this correct?
Below is the Dockerfile I have used for your reference, maybe I am doing something wrong in there which prevents me from catching this error.
Any help in resolving this would be very much appreciated. Thanks a lot for your help, and sorry for using up your time.
RUN apt-get -y update && \
apt-get -y install cmake && \
apt-get -y install git && \
apt-get -y install build-essential && \
apt-get -y install pkg-config && \
apt-get -y install yasm
RUN mkdir source
RUN mkdir /source/ffmpeg && git clone https://github.com/FFmpeg/FFmpeg.git /source/ffmpeg && \
mkdir /source/turingcodec && git clone https://github.com/bbc/turingcodec.git /source/turingcodec && \
mkdir /source/ffmpeg/ffmpeg_build && \
RUN cmake -DCMAKE_INSTALL_PREFIX="/source/ffmpeg/ffmpeg_build" .. && \
make && \
COPY 0001-Added-Turing-codec-interface-for-ffmpeg.patch /source/ffmpeg
RUN git apply 0001-Added-Turing-codec-interface-for-ffmpeg.patch && \
PKG_CONFIG_PATH="/source/ffmpeg/ffmpeg_build/lib/pkgconfig" ./configure --prefix="/source/ffmpeg/ffmpeg_build" \
--pkg-config-flags="--static" --extra-cflags="-I/source/ffmpeg/ffmpeg_build/include" \
--extra-ldflags="-L/source/ffmpeg/ffmpeg_build/lib" --bindir="/source/ffmpeg" --enable-gpl --enable-libturing && \
More information about the ffmpeg-devel