Ubuntu重装ImageMagick后编译项目出现undefined reference报错求解
问题原因
该报错是链接器无法找到fontconfig库中定义的FcWeightToOpenTypeDouble和FcWeightFromOpenTypeDouble两个符号,根因是源码编译、卸载ImageMagick的过程中,要么损坏了系统fontconfig相关依赖的文件,要么是ImageMagick编译残留的库文件和系统库产生了版本冲突,导致pango库链接时找不到对应符号。
解决步骤
第一步:修复系统基础依赖
执行命令重装相关系统包,覆盖被源码操作修改/损坏的库文件:sudo apt update && sudo apt install --reinstall libfontconfig1 libfontconfig1-dev libpango1.0-dev第二步:彻底清理ImageMagick源码安装残留
make uninstall无法完全清理所有安装文件,需手动清除残留避免版本冲突:
- 进入之前编译ImageMagick的源码目录,执行
sudo make uninstall - 执行以下命令删除所有零散残留文件:
sudo rm -rf /usr/local/include/ImageMagick* sudo rm -rf /usr/local/lib/libMagick* sudo rm -rf /usr/local/share/doc/ImageMagick* sudo rm -rf /usr/local/bin/Magick*
- 更新系统动态链接缓存:
sudo ldconfig
- 第三步:重新编译安装8位深度的ImageMagick
回到ImageMagick源码目录,执行以下命令编译安装,强制使用系统自带依赖避免版本冲突:
./configure --with-quantum-depth=8 --with-system-libraries make -j$(nproc) sudo make install sudo ldconfig
- 第四步:验证安装并调整项目编译参数
- 执行
identify -version确认返回的Quantum depth值为8,说明ImageMagick安装符合要求 - 编译项目时,在链接参数中加入
pkg-config --libs MagickWand(根据你实际用到的ImageMagick组件调整为MagickCore等),自动引入所需的链接依赖,也可以手动添加-lfontconfig参数补全fontconfig库链接。
内容的提问来源于stack exchange,提问作者Vishal Kumar
相关产品推荐
相关产品推荐

