Celeb Glow
updates | March 23, 2026

FFmpeg for Super Resolution : libtensorflow_framework Relink Error & vaSyncBuffer undefined symbol

I am trying to do Super Resolution with FFmpeg following this thread from Video Stackexchange : How do the super resolution filters in FFmpeg work ?.

SYSTEM :

  1. Ubuntu 20.04
  2. Nvidia 510 (verified using nvidia-smi)
  3. CUDA 11.6 (verified using (nvcc --version)
  4. CUDNN 8.4 (installation method and running verification following their official website)
  5. Tensorflow 2.7.0 (installation method and running verification following their official website)
  6. TensorRT (installed from pip3)
  7. Installed zlib1g and zlib1g-dev (via apt-get)

I had to build ffmpeg with tensorflow, here's the complete settings from the tutorial :

./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-gpl \ --enable-gnutls \ --enable-libass \ --enable-libfdk-aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-libtensorflow \ --enable-nonfree

ERROR :There was no error during building & installing FFmpeg from source. However, running FFmpeg (including ffmpeg --version) result in this error :

ffmpeg: Relink `/usr/local/lib/libtensorflow_framework.so.2' with `/lib/x86_64-linux-gnu/libz.so.1' for IFUNC symbol `crc32_z'
ffmpeg: symbol lookup error: ffmpeg: undefined symbol: vaSyncBuffer

Looks like it's tensorflow-related, however I have verified that tensorflow is working properly on my system. I could find nothing on Google, there's just one thread discussing exactly the same error (here), however there is still no solution as well. I am aware the error is not symlink related, but just in case this information is needed :

$ ls -l /usr/local/lib | grep "libtensor*"
lrwxrwxrwx 1 root root 28 Apr 10 05:17 libtensorflow_framework.so -> libtensorflow_framework.so.2
lrwxrwxrwx 1 root root 32 Apr 10 05:19 libtensorflow_framework.so.2 -> libtensorflow_framework.so.2.7.0
-r-xr-xr-x 1 root root 38362936 Apr 10 05:14 libtensorflow_framework.so.2.7.0
lrwxrwxrwx 1 root root 18 Apr 10 05:18 libtensorflow.so -> libtensorflow.so.2
lrwxrwxrwx 1 root root 22 Apr 10 05:19 libtensorflow.so.2 -> libtensorflow.so.2.7.0
-r-xr-xr-x 1 root root 784355912 Apr 10 05:14 libtensorflow.so.2.7.0
$ ldd /usr/local/lib/libtensorflow_framework.so.2 linux-vdso.so.1 (0x00007ffdd598e000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc9f93bd000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc9f926e000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc9f9264000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc9f9241000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc9f9027000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc9f900c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc9f8e18000) /lib64/ld-linux-x86-64.so.2 (0x00007fc9fb31a000)
$ ls -l /lib/x86_64-linux-gnu | grep "libz.*"
lrwxrwxrwx 1 root root 14 Oct 15 2020 libz.so.1 -> libz.so.1.2.11
-rw-r--r-- 1 root root 108936 Oct 15 2020 libz.so.1.2.11
$ ldd /lib/x86_64-linux-gnu/libz.so.1 linux-vdso.so.1 (0x00007ffc693bf000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3935cfb000) /lib64/ld-linux-x86-64.so.2 (0x00007f3935f5c000) 

[UPDATE]

Error 1 is solved (see answer below). Now what remains is Error 2 :

$ ffmpeg --version
ffmpeg: symbol lookup error: ffmpeg: undefined symbol: vaSyncBuffer

Any suggestion ?

1 Answer

FIX FOR ERROR 1 :

ffmpeg: Relink `/usr/local/lib/libtensorflow_framework.so.2' with `/lib/x86_64-linux-gnu/libz.so.1' for IFUNC symbol `crc32_z'

I have zlib1g installed via apt-get and I guess that was the problem because it wasn't the version that FFmpeg wanted. I'm following answer from this question with some modifications :

  1. Look for information regarding symbolic link on libz.so.1

    ls -ls /lib/x86_64-linux-gnu | grep "libz*"
    0 lrwxrwxrwx 1 root root 14 Mar 27 01:21 libz.so.1 -> libz.so.1.2.11
    116 -rw-r--r-- 1 root root 116960 Mar 27 01:21 libz.so.1.2.11
  2. Open this website and look for a package following the symbolic link (mine is libz.so.1.2.11). I downloaded all packages (3 of them : zlib1g, zlib1g-dev and zlib1g-dbg).

  3. Remove and purge already installed zlib1g and zlib1g-dev with apt-get remove --purge, then fix anything with sudo apt --fix-broken install if necessary.

  4. Install 3 packages from point 2 with : sudo dpkg -i

  5. sudo ldconfig.

Done, error 1 is gone.

PS : If you do apt-get dist-upgrade you will be asked to upgrade zlib1g and/or zlib1g-dev, well, don't upgrade them otherwise you will encounter this error again. I hold mine from upgrade with apt-mark hold.

FIX FOR ERROR 2 :

$ ffmpeg --version
ffmpeg: symbol lookup error: ffmpeg: undefined symbol: vaSyncBuffer
  1. Remove all libva* installation from machine.

  2. Install libva and libva-utils from Intel Github. libva in particular will get installed in a directory that FFmpeg won't find. Therefore, during configuration of both, add prefix /usr

    ./configure --prefix=/usr
  3. Reboot.

No more vaSyncBuffer error. FFmpeg managed to find libva

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy