Portál AbcLinuxu, 4. května 2025 11:02
# cat lib/pkgconfig/libvmaf.pc prefix=/tmp/stream_install/ffmpeg-build-static libdir=${prefix}/lib includedir=${prefix}/include Name: libvmaf Description: VMAF, Video Multimethod Assessment Fusion Version: 1.3.16 Libs: -L${libdir} -lvmaf Libs.private: -pthread Cflags: -I${includedir}/libvmafffmpeg překládám následovně, PKG_CONFIG_PATH odkazuje správně ($DEST_DIR je můj root adresář pro build = /tmp/stream_install/ffmpeg-build-static). PKG_CONFIG_PATH="$DEST_DIR/lib/pkgconfig:$DEST_DIR/lib64/pkgconfig" \ ./configure \ --enable-static \ --pkg-config-flags="--static" \ --disable-shared \ --prefix="$DEST_DIR" \ --extra-cflags="-I $DEST_DIR/include -static -I $CUDA_HOME/include/" \ --extra-ldflags="-L $DEST_DIR/lib -static -L $CUDA_HOME/lib64/" \ --enable-gpl \ --enable-nonfree \ --enable-libx264 \ --enable-libx265 \ --enable-libfdk-aac \ --enable-openssl \ --enable-libvmaf --enable-version3 \ --enable-pthreads \ --enable-runtime-cpudetect \ --enable-filter=drawtext --enable-libfreetype \ --extra-libs="-lpthread -lm -lz -ldl" Nemůžu už den přijít na to, kde je problém. Bohužel s pkgconfig tolik nepracuji, ale prostě tam nic chybového nevidím. :( Díky za radu.
Řešení dotazu:
pkg-config --list-all | grep libvmaf
fdk-aac Fraunhofer FDK AAC Codec Library - AAC codec library ffnvcodec ffnvcodec - FFmpeg version of Nvidia Codec SDK headers aom aom - Alliance for Open Media AV1 codec library v2.0.0-284-gcfd029691. x264 x264 - H.264 (MPEG4 AVC) encoder library libvmaf libvmaf - VMAF, Video Multimethod Assessment Fusion x265 x265 - H.265/HEVC video encoder
export PKG_CONFIG_LIBDIR="bla" pkg-configNeprepisuje tuto premennu skript ./configure resp. Makefile.ac? Ak by si prekladal v chroote, tak tam si v chroote mozes aj instalovat do systemu a bez toho aby si dobral tvoj hlavny pouzivany system.
export PATH="$PATH:/opt/hello_world/bin/"Ak nastavujes nove hodnoty, tak pridavaj aj defaulne systemove hodnoty s tou novou hodnotou (tj. vychodiskove cesty). Hodnoty su oddelene ":". Vychodiskove hodnoty sa daju zistit z live systemu (pozri).
linux-vdso.so.1 (0x00007ffd6f5f0000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f687d28e000) libvmaf.so.0 => not found libnppig.so.10 => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libnppig.so.10 (0x00007f687b6a6000) libnppicc.so.10 => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libnppicc.so.10 (0x00007f687b01b000) libnppidei.so.10 => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libnppidei.so.10 (0x00007f687a5ab000) libva.so.2 => /lib/x86_64-linux-gnu/libva.so.2 (0x00007f687a582000) libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f687a4c1000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f687a4a5000) libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f687a412000) libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f687a13c000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f687a136000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f687a113000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f6879f30000) libmvec.so.1 => /lib/x86_64-linux-gnu/libmvec.so.1 (0x00007f6879f04000) libva-drm.so.2 => /lib/x86_64-linux-gnu/libva-drm.so.2 (0x00007f6879eff000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6879d0d000) /lib64/ld-linux-x86-64.so.2 (0x00007f68805a8000) libnppc.so.10 => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libnppc.so.10 (0x00007f6879a91000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f6879a86000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6879a69000) libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f6879a31000) libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f6879a1d000)
A podle mého řada jich je staticky, protože v ldd nejsou (třeba libaom), takže částečně to určitě funguje.libaom v Debiane a Ubuntu Rob v Linuxe podla Linuxu (ak nie su ine dovody). Nainstaluj si ju do /usr/local/lib a pridaj priecinok /usr/local/lib do /etc/ld.so.conf (urcuje kde hladat zdielane kniznice). Index vsetkych .so suborov sa aktualizuje prikazom ldconfig. Alebo prilozenu kniznicu kopirujes vedla Tvojej binarky a pri spustani uprav/nastav premennu LD_LIBRARY_PATH, aby hladalo v priecinku kde mas binarku. A najlepsie si je vytvor balicek a ten mat v systeme. Ber, ze pri aktualizacii staci zmenit kniznicu a nie cely program.
když přidávám jednotlivé --enable-*, které jsem předtím vypřekládal do vlastního binuZle chapes --enable-. To sluzis na jednoduche nastavenie prekladu, bez toho aby pouzivatel studoval a upravoval Makefile.{am,ac}. Napriklad miesto pre gtkmm (GTK) prekladaj pre QT. Kod programu je napisane pre obe rozhrania ale ktory kod sa realne bude vykonavat sa nastavuje s predprocesom v C/C++. Mozes napriklad vyberat rozne kniznice napr. na spracovanie urciteho formatu - napr. volba na teba podla efektivnosti, rychlosti. Alebo zapinas/vypisanie bonus casti, ktore nie su uplne nevyhnutne k behu programu - napr. povolit notifikacie na obrazovku alebo zakazanie systemd casti (monitor stavu baterky).
--extra-cflags="-I $DEST_DIR/include -static -I $CUDA_HOME/include/" \
--extra-ldflags="-L $DEST_DIR/lib -static -L $CUDA_HOME/lib64/" \
Na (bez static):
--extra-cflags="-I $DEST_DIR/include -I $CUDA_HOME/include/" \
--extra-ldflags="-L $DEST_DIR/lib -L $CUDA_HOME/lib64/" \
:/tmp/stream_install/ffmpeg-build-static/lib# ls
libaom.a libavdevice.a libavformat.a libfdk-aac.a libmp3lame.a libpostproc.a libswscale.a libx264.a libyasm.a
libavcodec.a libavfilter.a libavutil.a libfdk-aac.la libmp3lame.la libswresample.a libvmaf.a libx265.a pkgconfig
Když jsem dynamické ručně odmazal a nechal jen statickou, tak už si přeložil se statickou.
Je to tedy jediná knihovna (libvmaf), která se vypřekládá dynamicky i staticky...
libvmaf překládám následovně:
git clone https://github.com/Netflix/vmaf
cd vmaf/libvmaf
# pokud knihovnu chceme mít v systému, tak: meson build --buildtype release
meson build --prefix="$DEST_DIR" --libdir="$DEST_DIR/lib" --default-library static --buildtype release
ninja -vC build
ninja -vC build test
ninja -vC build install
Nicméně co jsem našel, ta volba --default-library (both,dynamic,static) lidem spíš nefunguje. Ale to je info z 2018, tak je mi divné, že to nejde ani dnes...
https://github.com/mesonbuild/meson/issues/2910
mimochodem v ofic. dokumentaci https://mesonbuild.com/Builtin-options.html je ta volba s podtržítkem, ale to mi nejde vůbec.
meson: error: unrecognized arguments: --default_library static
meson z repa meson -v
0.53.2
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.