![编译 ImageMagic 时链接到 Fedora 33 (libx265) 上的错误 .so 文件](https://linux22.com/image/185246/%E7%BC%96%E8%AF%91%20ImageMagic%20%E6%97%B6%E9%93%BE%E6%8E%A5%E5%88%B0%20Fedora%2033%20(libx265)%20%E4%B8%8A%E7%9A%84%E9%94%99%E8%AF%AF%20.so%20%E6%96%87%E4%BB%B6.png)
在 Fedora 33 上,我正在尝试编译图像魔术来自 git.
libx265
并libheif
从 Fedora fusion 存储库及其软件包一起安装-devel
。
运行时./configure --prefix=$HOME --program-prefix=p_
我得到这些报告:
HEIC --with-heic=yes yes
...
LIBS = -ljbig -ltiff -lfreetype -lraqm -lfreetype -ljpeg -llqr-1 -lglib-2.0 -lpng16 -lz -lfftw3 -lfontconfig -lfreetype -lheif -lwebpmux -lwebpdemux -lwebp -lwebp -lXext -lXt -lSM -lICE -lX11 -llzma -lbz2 -lIlmImf -lImath -lHalf -lIex -lIexMath -lIlmThread -pthread -lopenjp2 -lpangocairo-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lcairo -lxml2 -lz -lz -lm -lpthread
...
DELEGATES = bzlib fftw fontconfig freetype heic jbig jng jpeg lqr lzma openexr openjp2 pango png ps raqm tiff video webp x xml ziplib zlib zstd
编译后,二进制文件链接到错误的libx265.so
,但是:
% ./p_magick --version
./p_magick: error while loading shared libraries: libx265.so.169: cannot open shared object file: No such file or directory
ldd
二进制文件(p_magic
在我的例子中)显示:
libx265.so.169 => not found
(编译过程是标准的./configure
,,make
)make install
这让我很困惑,因为libx265.so
安装了:
% ll /usr/lib64/libx265*
lrwxrwxrwx 1 root root 14 08-19 03:29 /usr/lib64/libx265.so -> libx265.so.192*
-rwxr-xr-x 1 root root 4.6M 08-19 03:29 /usr/lib64/libx265.so.192*
-rwxr-xr-x 1 root root 5.6M 08-19 03:29 /usr/lib64/libx265_main10.so.192*
-rwxr-xr-x 1 root root 5.5M 08-19 03:29 /usr/lib64/libx265_main12.so.192*
由于某种原因,p_magick
链接到libx265.so.169
但在我的系统上libx265.so.192
安装了,我不太明白它如何链接到错误的库,而且,我正在努力寻找libx265
ImageMagick 代码库中任何地方的提及(我' ve grep
-ed 等)。
这就是为什么我很确定错误不是由 ImageMagick 引起的,而是由我的系统配置引起的,但我不知道从哪里开始。
附录
我已删除/etc/ld.so.cache
并使用 重新创建缓存ldconfig
。
ldconfig -p
显示:
# ldconfig -p | grep libx265
libx265_main12.so.192 (libc6,x86-64) => /lib64/libx265_main12.so.192
libx265_main10.so.192 (libc6,x86-64) => /lib64/libx265_main10.so.192
libx265.so.192 (libc6,x86-64) => /lib64/libx265.so.192
libx265.so (libc6,x86-64) => /lib64/libx265.so
里面的链接/lib64
似乎也是正确的:
# ll /lib64/libx265.so
lrwxrwxrwx 1 root root 14 Aug 19 03:29 /lib64/libx265.so -> libx265.so.192
但该错误仍然存在。