我正在尝试构建一个可移植版本的ffmpeg,以便在主要的Linux发行版上运行,最终用户只需要将分布式targz包解压缩到适当的目录。
我之前在Ubuntu 16.04上构建的工作正常。我升级到Ubuntu 18.04和新版本,当在带有LD_LIBRARY_PATH=. ./ffmpeg
的Fedora 27上运行时,显示错误:
./ffmpeg: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./libavfilter.so.7)
./ffmpeg: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by ./libavformat.so.58)
我将其解释为 libavxxx
库想要动态链接系统库libc
和libm
,这些系统库本来是用GLIBC_2.27
编译的,但那些库是已使用较旧的GLIBC版本进行编译。
请注意,错误从libavxxx.so
显示的事实不是重点,好像我将ffmpeg
编译为胖二进制文件(libavxxx
静态链接),我得到同样的错误ffmpeg
。
到目前为止,我发现的唯一解决方法是将构建系统libc.so.6
和libm.so.6
库复制到包含二进制文件的目录中,并使它们成为ffmpeg
包的一部分。
有没有更好的方法来处理这个问题?