Ubuntu 22.04源码编译OpenCV遇libpangoft2链接错误求助
解决Ubuntu 22.04源码编译OpenCV时libpangoft2的链接错误
问题本质
你遇到的链接错误 /usr/bin/ld: /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0: undefined reference to g_memdup2',核心原因是**链接器无法找到g_memdup2符号**。尽管系统的libglib2.0-dev已是最新版本,但从编译日志能看到Anaconda的库路径被加入了链接搜索范围,大概率是链接器优先调用了Anaconda中较旧的libglib库(该版本未包含g_memdup2`函数)。
可行解决步骤
1. 清除Anaconda环境干扰(优先尝试)
编译时临时屏蔽Anaconda的库路径,确保链接器使用系统原生库:
# 重置环境变量,仅保留系统默认路径 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/local/lib # 进入OpenCV构建目录,彻底清理后重新编译 cd opencv/build rm -rf * cmake -DBUILD_TIFF=ON <你的其他编译参数> .. cmake --build .
2. 强制指定系统libglib路径
若仍有问题,在CMake配置时直接指定系统libglib的位置,强制链接器使用正确版本:
cmake -DBUILD_TIFF=ON \ -DGLIB_INCLUDE_DIR=/usr/include/glib-2.0 \ -DGLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libglib-2.0.so \ -DGOBJECT_LIBRARY=/usr/lib/x86_64-linux-gnu/libgobject-2.0.so \ <你的其他编译参数> ..
3. 修复系统库依赖
如果上述方法无效,验证并修复系统库的完整性:
# 查看libpangoft2的版本信息 dpkg -l libpangoft2-1.0-0 # 重新安装相关库,修复可能的损坏或不匹配 sudo apt install --reinstall libpangoft2-1.0-0 libglib2.0-0
4. 临时禁用HighGUI模块(应急方案)
如果不需要OpenCV的图形界面功能,可直接禁用HighGUI模块跳过该依赖:
cmake -DBUILD_TIFF=ON -DBUILD_opencv_highgui=OFF <你的其他编译参数> ..
内容的提问来源于stack exchange,提问作者matanox
相关产品推荐
相关产品推荐

