我知道怎麼看哪些庫有一定分量correponds使用命令:我在哪裏可以看到庫包含LLVM的哪些部分?
llvm-config --libs core
現在,假設我得到一個鏈接錯誤,並希望包括另一個庫來解決它。
說,鏈接器無法解析某個符號A
。那麼我如何:
1)找到包含特定符號的庫,例如, LLVMCore.lib。
2)查找庫的內容以查看它定義的符號?
我不明白如何閱讀文檔。
我知道怎麼看哪些庫有一定分量correponds使用命令:我在哪裏可以看到庫包含LLVM的哪些部分?
llvm-config --libs core
現在,假設我得到一個鏈接錯誤,並希望包括另一個庫來解決它。
說,鏈接器無法解析某個符號A
。那麼我如何:
1)找到包含特定符號的庫,例如, LLVMCore.lib。
2)查找庫的內容以查看它定義的符號?
我不明白如何閱讀文檔。
正如你已經發現了一個適當的LLVM-辦法做到這一點會被指示組件使用llvm-config你打算鏈接或使用,例如
llvm-config --cxxflags --ldflags --system-libs --libs core
其他常見非LLVM具體,你可以用它來找到一個符號的方法:在一個雙贏的平臺(使用VS自帶工具在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
;的extern-只,還原函數和排除未定義的符號)
鑑於上述問題2是微不足道的。
的一種方式,看看你的lib的符號是使用nm命令:
nm -gC mylib.so
感謝您的回答。你還可以提供用於在Linux上查找符號的'grep'命令嗎?這是LLVM程序員通常解析其符號的方式,即找到包含它的庫? – Shuzheng
@Shuzheng編輯並添加更多信息 –
謝謝你的回答。它是完整的和令人滿意的:-) 最後一個問題,你知道任何「組件」被定義的資源嗎?現在,我使用'llvm-config'來查看一個組件與哪個庫相關。然而,如果有一些資源說:「LLVM源代碼的這些部分被放到這個庫中」和「這個組件包含對應於這些源的這些部分的庫」,那將是很好的。這樣,如果我看到'someheader.hpp'中定義了一個符號,我可以立即找到相應的庫。 – Shuzheng