我们如何找到链接器正在查找的符号?

How can we find what symbols are being looked for by linker?

提问人:inkfil 提问时间:11/15/2022 更新时间:11/15/2022 访问量:59

问:

我收到一个奇怪的错误,我的库具有它应该寻找的符号定义,但仍然抛出错误“arm64 架构的未引用符号”

现在我尝试给了我“胖文件中的架构:libQt5Core.a 是:x86_64 arm64”,以确保我有正确架构的库。lipo -info libQt5Core.a

是否有任何 cmake 命令(可能启用链接器标志,我正在使用 IOS 的 clang 工具链)给出链接器试图在 lib 文件中查找的符号列表?

我要求的本质上是如何获取通过 cmake 为 IOS 的 clang 工具链生成的 Map 文件(如头文件 C/C++ 中的符号中所述)。

我不是要求查看我的库中有哪些可用的符号,因为我可以看到该信息nm libQt5Core.a

我在问之前见过这些

  1. 如何使用 cmake 生成 Map 文件
  2. 使用 clang 和 lld 生成 .map 文件
C++ CMake 链接器 Clang NM

评论

0赞 Alan Birtles 11/15/2022
链接器命令行上是否按正确的顺序列出库?鉴于您的 Qt 库包含 x86_64 和 arm,它是为 macos 而不是 ios 编译的吗?
0赞 inkfil 11/15/2022
我在 cmake 中为 IOS 提供了 Qt 路径,所以这应该是 ios 的 qt,关于链接的顺序,我不确定,但这是我在 cmake 中的订单“Qt5::Core Qt5::Widgets Qt5::OpenGL Qt5::Multimedia Qt5::Network Qt5::Sql Qt5::Quick Qt5::QuickWidgets Qt5::Svg Qt5::WebView”set(Qt5_DIR "/Users/inkfil/Qt/5.12.11/ios/lib/cmake/Qt5")
0赞 Alan Birtles 11/15/2022
您是否检查过您设置的目录是否确实是要链接的目录?

答: 暂无答案