我知道如何使用命令查看某个组件对应的库:
llvm-config --libs core
现在,假设我收到链接器错误,并希望包含另一个库来解决它。
说,链接器无法解析某些符号A
。然后我该怎么做:
1)找到包含特定符号的库,例如LLVMCore.lib。
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