मैं FFMPEG और लाइबॉम को स्रोत से संकलित करने का प्रयास कर रहा हूं क्योंकि डिफ़ॉल्ट रूप से Ubuntu 18.04 में gcc और g ++ कंपाइलरों ने डिफ़ॉल्ट रूप से निम्न विकल्प को सक्षम किया है: --enable-default-pie
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.3.0-16ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --with-as=/usr/bin/x86_64-linux-gnu-as --with-ld=/usr/bin/x86_64-linux-gnu-ld --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)
मैंने ए पास करने की कोशिश की है --extra-ldexeflags="-no-pie -fno-pic -fno-pie"
लेकिन इससे कोई फायदा नहीं हुआ। लाइबॉम को संकलित करने की कोशिश करते समय मुझे यही समस्या है। मैंने gcc के पुराने संस्करण को स्थापित करने की कोशिश की है, लेकिन 5.X में भी यह है --enable-default-pie
डिफ़ॉल्ट रूप से सक्षम विकल्प, इसलिए यह अच्छा नहीं है। स्पष्ट रूप से यह विकल्प उबंटू 18.04 पर मजबूर किया गया है और इसके आसपास कोई रास्ता नहीं है।
लाइबॉम को स्थापित करने का प्रयास करते समय मेरी त्रुटि है:
64%] Linking CXX executable examples/decode_with_drops
/usr/bin/x86_64-linux-gnu-ld: libaom.a(fwd_txfm_ssse3_x86_64.asm.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: libaom.a(quantize_ssse3_x86_64.asm.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: libaom.a(subpel_variance_sse2.asm.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: libaom.a(highbd_subpel_variance_impl_sse2.asm.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
CMakeFiles/decode_with_drops.dir/build.make:155: recipe for target 'examples/decode_with_drops' failed
make[2]: *** [examples/decode_with_drops] Error 1
CMakeFiles/Makefile2:936: recipe for target 'CMakeFiles/decode_with_drops.dir/all' failed
make[1]: *** [CMakeFiles/decode_with_drops.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
[संपादित करें]: मेरी ffmpeg संकलन कमांड जोड़ना।
मैं उबंटू संकलन गाइड का पालन कर रहा था जो मेरी कमांड पर पोस्ट किया गया था, हालांकि थोड़ा अलग था। मैंने ffplay को अक्षम कर दिया है, क्योंकि मैं एक सर्वर पर ffmpeg स्थापित कर रहा हूं और libsrt (हाइविज़न सिक्योर विश्वसनीय ट्रांसपोर्ट प्रोटोकॉल) और लाइबॉम (AV1) को सक्षम किया है। मैंने नवीनतम रात के निर्माण के बजाय स्थिर 4.0 संस्करण को डाउनलोड करने के लिए डाउनलोड लिंक को भी बदल दिया है। यह मेरा ffmpeg संकलन कमांड है:
cd ~/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.0.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg-4.0 && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$HOME/bin" \
--enable-shared \
--enable-gpl \
--enable-nonfree \
--enable-ladspa \
--enable-libsrt \
--enable-libsoxr \
--enable-libspeex \
--enable-avfilter \
--enable-avresample \
--enable-postproc \
--enable-pthreads \
--enable-libfdk-aac \
--enable-libopus \
--enable-libass \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-libfreetype \
--enable-libkvazaar \
--disable-ffplay \
--enable-libopenjpeg \
--enable-libwebp \
--enable-libxvid \
--enable-libvidstab \
--enable-libopenh264 \
--enable-zlib \
--enable-openssl && \
PATH="$HOME/bin:$PATH" make -j8 && \
sudo make install && \
hash -r
gcc54-c++_5.4.0-ubuntu16_amd64.deb
18.04 (और 16.04) के लिए drive.google.com/file/d/1ptHLaZXImpeMzq4xuuGGn5VjrvxNSop3/... ... प्रदान करता है /usr/bin/{gcc54, g++54, gfortran54}
। इंस्टॉल करें : sudo gdebi Downloads/gcc54-c++_5.4.0-ubuntu16_amd64.deb