You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:35:53