我在哪里可以看到库包含 LLVM 的哪些部分?
Where do I see what parts of LLVM a library contain?
我知道如何通过命令查看某个组件对应于哪些库:
llvm-config --libs core
现在,假设我遇到了一个链接器错误,并且想包含另一个库来解决它。
比如说,链接器无法解析某些符号 A
。那我怎么办:
1) 找到包含特定符号的库,例如LLVMCore.lib.
2) 查找库的内容,看看它定义了什么符号?
我不明白如何阅读文档。
查看库符号的一种方法是使用 nm 命令:
nm -gC mylib.so
因为您已经发现了一个合适的 LLVM-way 来执行此操作,将使用 llvm-config 通过指示您打算 link 的 组件 反对或使用,例如
llvm-config --cxxflags --ldflags --system-libs --libs core
其他常用的non-llvm找符号的具体方法:在Win平台上(使用VS原生工具cmd或等效environment-set之一):
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")
如 所建议。
在 unix 系统上:
for lib in $(find . -name \*.so) ; do nm -gC $lib | grep my_symbol | grep -v " U " ; done
(在此目录中的 *.so
库中搜索 my_symbol
;extern-only,分解并排除未定义的符号)
鉴于上述问题 2 是微不足道的。
我知道如何通过命令查看某个组件对应于哪些库:
llvm-config --libs core
现在,假设我遇到了一个链接器错误,并且想包含另一个库来解决它。
比如说,链接器无法解析某些符号 A
。那我怎么办:
1) 找到包含特定符号的库,例如LLVMCore.lib.
2) 查找库的内容,看看它定义了什么符号?
我不明白如何阅读文档。
查看库符号的一种方法是使用 nm 命令:
nm -gC mylib.so
因为您已经发现了一个合适的 LLVM-way 来执行此操作,将使用 llvm-config 通过指示您打算 link 的 组件 反对或使用,例如
llvm-config --cxxflags --ldflags --system-libs --libs core
其他常用的non-llvm找符号的具体方法:在Win平台上(使用VS原生工具cmd或等效environment-set之一):
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")
如
在 unix 系统上:
for lib in $(find . -name \*.so) ; do nm -gC $lib | grep my_symbol | grep -v " U " ; done
(在此目录中的 *.so
库中搜索 my_symbol
;extern-only,分解并排除未定义的符号)
鉴于上述问题 2 是微不足道的。