c++ - 在哪里可以看到库包含 LLVM 的哪些部分?

标签 c++ llvm

我知道如何使用以下命令查看某个组件对应的库:

llvm-config --libs core

现在,假设我遇到链接器错误并希望包含另一个库来解决它。

比如说,链接器无法解析某些符号A。那我该怎么办:

1) 找到包含特定符号的库,例如LLVMCore.lib。

2)查找库的内容以查看它定义了哪些符号?

阅读文档时我不明白如何执行此操作。

最佳答案

正如您已经发现的一个正确的 LLVM 方式来执行此操作将使用 llvm-config通过指示您想要链接或使用的组件,例如

llvm-config --cxxflags --ldflags --system-libs --libs core

可用于查找符号的其他常见非 llvm 特定方法:在 Win 平台上(使用 VS native 工具 cmd 或等效的环境设置工具):

for %f in (*.lib) do (dumpbin.exe /symbols %f | findstr /C:"your_symbol") 

如果您无法解决 findstr 的限制,GNU grep 可能是更好的选择。 如果您安装了 UNIX 工具并且在您的 PATH 中,您也可以使用

for %f in (*.lib) do (nm -gC %f | findstr /C:"your_symbol")

baddger964建议。

在 UNIX 系统上:

for lib in $(find . -name \*.so) ; do nm -gC $lib | grep my_symbol | grep -v " U " ; done

(在此目录中搜索 *.so 库以查找 my_symbol;仅限外部、分解并排除 undefined symbol )

鉴于上述问题 2 是微不足道的。

关于c++ - 在哪里可以看到库包含 LLVM 的哪些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41932428/

相关文章:

c++ - 在 C++ 中无效使用类?

c++ - cmake:在主 cmakelists 中使用之前从 git 检索库

c - GCC 和 Clang 优化选项之间的区别

llvm - 在 LLVM 中查找特定变量的所有用途

ios - Xcode5 上的 libcurl 链接器错误,但在 Xcode 4.6 上工作正常

objective-c - 寻找在运行时崩溃的有效 Objective-C ARC 代码示例

c++ - 'implicit sharing' 是否可从 Qt 类继承?

c++ - 如果内存池比malloc快,为什么malloc不能在幕后使用它们?

c++ - 消息框发送 Windows 消息?

c - 在另一台机器上运行从 clang+llvm 编译的程序