recompile with -fPIC

The place to discuss linux version of MakeMKV
Post Reply
Kibner
Posts: 1
Joined: Fri Jan 19, 2024 7:13 pm

recompile with -fPIC

Post by Kibner »

I am unable to compile makemkv-oss. It gives me the error message in the title which is repeated with more context below. I am unable to figure out how to fix this.

Code: Select all

/usr/bin/ld: /home/kibner/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib/libfdk-aac.a(genericStds.o): warning: relocation against `stdout@@GLIBC_2.2.5' in read-only section `.text'
/usr/bin/ld: /home/kibner/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib/libfdk-aac.a(genericStds.o): relocation R_X86_64_PC32 against symbol `stdout@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make: *** [Makefile:89: out/libmakemkv.so.1.full] Error 1
I am running Debian GNU/Linux forky/sid from a Distrobox using this image: https://quay.io/repository/toolbx-image ... 065b39eae4

I have installed the following libraries via apt-get using the information from viewtopic.php?f=3&t=224&sid=ba1814d36dd ... 890a380162 and https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
  • build-essential
  • pkg-config
  • libc6-dev
  • libssl-dev
  • libexpat1-dev
  • libavcodec-dev
  • libgl1-mesa-dev
  • qtbase5-dev
  • zlib1g-dev
  • autoconf
  • automake
  • cmake
  • git-core
  • libass-dev
  • libfreetype6-dev
  • libgnutls28-dev
  • libmp3lame-dev
  • libsdl2-dev
  • libtool
  • libva-dev
  • libvdpau-dev
  • libvorbis-dev
  • libxcb1-dev
  • libxcb-shm0-dev
  • libxcb-xfixes0-dev
  • meson
  • ninja-build
  • texinfo
  • wget
  • yasm
  • libunistring-dev
  • libaom-dev
  • libdav1d-dev
I then ran the scripts from the FFmpeg link above to get a fully-featured version of FFmpeg (see bottom of this post for script). This completed fine. The error message was generated when trying to compile makemkv-oss using this script:

Code: Select all

cd ~/Applications/MakeMKV && \
wget -O makemkv-oss.tar.gz https://www.makemkv.com/download/makemkv-oss-1.18.2.tar.gz && \
tar xzvf makemkv-oss.tar.gz --strip-components 1 -C ~/Applications/MakeMKV/makemkv-oss && \
cd ~/Applications/MakeMKV/makemkv-oss && \
PKG_CONFIG_PATH=$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib/pkgconfig ./configure && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

FFmpeg scripts here:

Code: Select all

# NASM
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.bz2 && \
tar xjvf nasm-2.16.03.tar.bz2 && \
cd nasm-2.16.03 && \
./autogen.sh && \
./configure --prefix="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" --bindir="$HOME/Applications/MakeMKV/FFmpeg/bin" && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libx264
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
cd x264 && \
PKG_CONFIG_PATH="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" --bindir="$HOME/Applications/MakeMKV/FFmpeg/bin" --enable-static --enable-pic && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libx265
sudo apt-get install libnuma-dev && \
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
wget -O x265.tar.bz2 https://bitbucket.org/multicoreware/x265_git/get/master.tar.bz2 && \
tar xjvf x265.tar.bz2 && \
cd multicoreware*/build/linux && \
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libvpx
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
cd libvpx && \
./configure --prefix="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libfdk-aac
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
cd fdk-aac && \
autoreconf -fiv && \
./configure --prefix="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" --disable-shared && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libopus
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
cd opus && \
./autogen.sh && \
./configure --prefix="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" --disable-shared && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libaom
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
mkdir -p aom_build && \
cd aom_build && \
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" -DENABLE_TESTS=OFF -DENABLE_NASM=on ../aom && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libsvtav1
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C SVT-AV1 pull 2> /dev/null || git clone https://gitlab.com/AOMediaCodec/SVT-AV1.git && \
mkdir -p SVT-AV1/build && \
cd SVT-AV1/build && \
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" -DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=OFF .. && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1))

# libdav1d
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C dav1d pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/dav1d.git && \
mkdir -p dav1d/build && \
cd dav1d/build && \
meson setup -Denable_tools=false -Denable_tests=false --default-library=static .. --prefix "$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" --libdir="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib" && \
ninja -j $(($(nproc) - 1)) && \
sudo ninja install -j $(($(nproc) - 1))

# libvmaf
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
git -C vmaf pull 2> /dev/null || git clone --depth 1 https://github.com/Netflix/vmaf.git &&
mkdir -p 'vmaf/libvmaf/build' &&
cd 'vmaf/libvmaf/build' &&
meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static '../' --prefix "$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" --bindir="$HOME/Applications/MakeMKV/FFmpeg/bin" --libdir="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib" &&
ninja -j $(($(nproc) - 1)) &&
sudo ninja install -j $(($(nproc) - 1))

# FFmpeg
cd ~/Applications/MakeMKV/FFmpeg/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
PKG_CONFIG_PATH="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/Applications/MakeMKV/FFmpeg/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --ld="g++" \
  --bindir="$HOME/Applications/MakeMKV/FFmpeg/bin" \
  --enable-gpl \
  --enable-gnutls \
  --enable-libaom \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libsvtav1 \
  --enable-libdav1d \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree \
  --enable-static \
  --disable-shared \
  --enable-pic && \
make -j $(($(nproc) - 1)) && \
sudo make install -j $(($(nproc) - 1)) && \
hash -r
Post Reply