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

如何在Ubuntu x86_64上正确构建并链接libunwind库

解决libunwind静态库链接时lzma函数未定义引用问题

你遇到的链接错误是因为libunwind默认启用了minidebuginfo功能,该功能依赖lzma库,而静态链接时不会自动递归引入依赖库,导致lzma相关函数找不到。以下是两种可行的解决办法:

方法一:编译libunwind时禁用lzma依赖

如果不需要minidebuginfo功能,直接在编译libunwind时关闭该选项即可:

  1. 回到libunwind源码目录,清理之前的编译产物:make clean && rm -rf build
  2. 重新执行configure,添加禁用参数:./configure --prefix=$(pwd)/build --disable-minidebuginfo
  3. 重新编译安装:make && make install
  4. 用新生成的静态库重新链接你的项目,此时不再需要依赖lzma,链接命令保持原来的即可。

方法二:链接项目时显式引入lzma库

如果需要保留minidebuginfo功能,需要在链接时手动加入lzma库:

  1. 先确保系统已安装lzma开发库(Ubuntu下执行:sudo apt-get install liblzma-dev)
  2. 修改编译链接命令,在末尾加上-llzma:
    g++ -O0 main.cpp -L/home/.../libunwindExample -lunwind -llzma
    
  3. 若链接仍有问题,可以直接指定静态库的绝对路径,避免链接器查找错误:
    g++ -O0 main.cpp /home/.../libunwindExample/libunwind.a /usr/lib/x86_64-linux-gnu/liblzma.a
    

ARM架构下的适配

ARM平台出现同样问题时,解决方案完全一致:要么编译libunwind时加--disable-minidebuginfo,要么链接项目时添加-llzma(ARM平台的lzma库路径可能不同,可通过find /usr/lib -name liblzma.a查找)。

另外,确认你的项目中已正确定义UNW_LOCAL_ONLY,该宏会减少libunwind的依赖范围,避免不必要的链接问题。

内容的提问来源于stack exchange,提问作者DSKY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:52:19