回答
實際上,當鏈接庫時,使用應該在定義之前。在處理提供其定義的庫文件之前,需要知道任何未解決的符號。
什麼問到訂單,恐怕您必須手動完成。如果libA依賴於libB(即libA使用來自libB的符號),則必須按以下順序鏈接:-lA -lB
。
這主要是文檔問題。一個記錄良好的庫清楚地說明了它依賴的其他庫,因此您可以計算出正確的鏈接順序。
如果你不想讀文檔或沒有可用的文件,試錯始終是一個選擇:)
我發現這是煩人了。我記得尋找一種工具來爲我排序,但沒有找到任何幫助。
最後,我決定使用暴力破解方法:如果您將兩次列出所有庫,例如-lA -lB -lA -lB
,它將保證每個庫都在每個其他庫之前(和之後)列出。
因此給定$(LIST)
庫,您可以使用$(addprefix -l,$(LIST) $(LIST))
。
不是很優雅,有些放慢鏈接階段,但工程。
Hummm,謝謝,但我知道這種方法可以得到* UGLY *如果你有15個庫:D – hari 2011-04-12 21:56:05
@hari:你可以使用'--start-group'和'--end-group'選項(或' ('和' - )'),以避免重複。根據[binutils手冊](http://sourceware.org/binutils/docs-2.21/ld/Options.html),它具有顯着的性能成本。 – eriktous 2011-04-13 03:25:10
@eriktous:是的,最終有人必須確保重複不會發生。 – hari 2011-04-14 01:23:22
- 1. 查找依賴關係及其依賴項
- 2. Maven-Assembly-Plugin包含特定的依賴關係及其傳遞依賴關係
- 3. make中的依賴關係順序
- 4. 指定編譯順序依賴關係
- 5. 庫依賴關係和執行順序
- 6. Android Gradle依賴關係解析順序
- 7. sbt庫依賴關係順序依賴嗎?
- 8. Jython和Python Lib依賴關係
- 9. Android - Google Play Services - Lib依賴關係
- 10. 按照其依賴關係的順序導入表的代碼
- 11. Masterpass依賴關係與其他依賴關係發生衝突
- 12. 依賴關係的nuget依賴關係
- 13. maven-shade-plugin:排除依賴關係及其所有傳遞依賴項
- 14. 依賴關係排序與循環依賴關係的檢測
- 15. maven程序集 - 忽略zip依賴關係的依賴關係
- 16. 從.lib到另一個.lib的依賴關係
- 17. RequireJS依賴關係序列
- 18. 依賴關係
- 19. 將EXE文件轉換爲MSI及其所有依賴關係
- 20. 構建C#項目及其依賴關係
- 21. Eclipse:維護多個product_configuration及其依賴關係
- 22. 列出nuget依賴關係及其當前版本
- 23. 離線安裝.gem及其依賴關係
- 24. 更新一個特定的R包及其依賴關係
- 25. OSGI - 處理第三方JAR及其依賴關係
- 26. 混淆Winform及其外部依賴關係(dll)
- 27. jasmine-maven-plugin加載源文件及其依賴關係
- 28. 鬆耦合複合對象節點及其依賴關係
- 29. Maven - 將特定的依賴關係及其傳遞依賴關係複製到給定位置
- 30. 系統JS依賴的加載順序
謝謝。這就是我想確認的,沒有任何魔法可以告訴你。 – hari 2011-04-12 21:55:37