我在哪里可以看到库中包含LLVM的哪些部分?

时间:2017-01-30 09:24:16

标签: c++ llvm

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

llvm-config --libs core

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

说,链接器无法解析某些符号A。然后我该怎么做:

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

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

我不明白如何阅读文档。

2 个答案:

答案 0 :(得分:2)

正如您已经发现一个正确的LLVM方法,可以使用llvm-config来指示您想要链接或使用的组件,例如

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

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

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

如果你不能解决发现限制,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的{​​{1}};仅限extern-only,demangle并排除未定义的符号)

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

答案 1 :(得分:1)

查看lib符号的一种方法是使用nm命令:

nm -gC mylib.so