提问人:DSKY 提问时间:6/24/2023 最后编辑:VLAZDSKY 更新时间:11/14/2023 访问量:315
如何正确构建和链接 libunwind 库
How to properly build & link the libunwind library
问:
我需要在我的 ubuntu x86_64 pc 上为我的 pc 构建库 libunwind(https://github.com/libunwind/libunwind),并使用 g++ 编译和链接所有内容。我能够构建一些文件,包括静态库文件 libunwind.a,但我就是无法将所有内容链接在一起。已经回答的问题(什么是未定义的引用/未解决的外部符号错误以及如何解决它?)没有适用于我的问题的解决方案。
这是我到目前为止尝试过的:
1. clone libunwind and go into the directory "libunwind"
2. autoreconf -i
3. ./configure --prefix=$(pwd)/build
4. make
5. make install
现在我的构建文件夹中有十几个文件
6. I copy the following files from the build folder to my source folder "libunwindExample", where my main.cpp is located: libunwind-dynamic.h libunwind-x86_64.a, libunwind-x86_64.h, libunwind.h, libunwind-common.h
7. Now I try to compile and link everything together using the command g++ -O0 main.cpp -L/home/.../libunwindExample -lunwind
执行此命令时,我会得到一堆链接器错误,这些错误告诉我我有很多未定义的引用(见下文)。我很确定,这是由于第 6 步,但我只是不知道我应该如何处理构建文件夹中的所有这些构建文件。只是为了好玩,我尝试了 ARM 架构的过程,但它只会导致不同的未定义引用。 我真的尝试了erverything,并且还搜索了libunwind邮件存档。任何人都可以告诉我如何避免这些链接器错误。
链接器错误:
/usr/bin/ld: /home/.../libunwind/src/elfxx.c:253: undefined reference to `lzma_stream_footer_decode'
/usr/bin/ld: /home/.../libunwind/src/elfxx.c:260: undefined reference to `lzma_index_buffer_decode'
/usr/bin/ld: /home/.../libunwind/src/elfxx.c:264: undefined reference to `lzma_index_size'
/usr/bin/ld: /home/.../libunwind/src/elfxx.c:269: undefined reference to `lzma_index_end'
/usr/bin/ld: /home/.../libunwind/src/elfxx.c:266: undefined reference to `lzma_index_uncompressed_size'
/usr/bin/ld: /home/.../libunwind/src/elfxx.c:269: undefined reference to `lzma_index_end'
main.cpp:(只是 https://eli.thegreenplace.net/2015/programmatic-access-to-the-call-stack-in-c/ 中的第一个代码示例)(是的,UNW_LOCAL_ONLY在包含之前定义)
答:
0赞
Stephen M. Webb
8/1/2023
#1
您可能在 libunwind 中遇到了一个上游错误,其中库链接不足。
尝试在不链接到压缩库的情况下进行配置。
./configure --disable-minidebuginfo --disable-zlibdebuginfo
然后按照其他步骤操作。
评论