gcc
和ld
提供了許多方法來指定庫的搜索路徑 - 其中包括-rpath
和-L
標誌。手冊頁顯示這兩個標誌之間沒有區別,有效地說每個標誌都向庫搜索路徑添加了一個庫。然而,看起來很奇怪的是,兩個標誌完全一樣,正好是。這兩種選擇之間有什麼區別?-rpath和-L有什麼區別?
回答
您必須閱讀手冊頁的一些過時的副本(強調):
-rpath = DIR
添加目錄到運行庫搜索路徑。這是使用
0123在鏈接一個ELF可執行文件與共享對象。所有-Rpath
參數是級聯,並傳遞給運行時接頭,其
使用它們在運行時查找共享對象。
與
-L searchdir
--library路徑= searchdir
路徑searchdir加入的那個LD將搜索路徑列表
存檔庫和ld控制腳本。
因此,-L
告訴ld
鏈接時尋找鏈接庫的位置。例如,當您在構建樹中構建庫時,可以使用此庫(例如),該庫將放入正常的系統庫路徑make install
。另一方面,--rpath
將該路徑存儲在可執行文件中,以便運行時動態鏈接程序可以找到這些庫。當您的庫位於系統庫搜索路徑之外時,可以使用它。
注意事項:1.大多數時候需要'-rpath =/some/weird/path',我們也需要'-L/some/weird/path'。 2.使用'gcc'需要使用'-Wl,-rpath = dir'。 –
我仍然不明白爲什麼兩者都需要。我有和中午一樣的經歷。以上。在編譯時需要哪些信息?除了可能的h-文件,原因。但是,這是我猜想的另一件事... –
@FredrikJohansson對於一個新問題,這是一個合理的主題(假設它當然還沒有被問到)。至少需要可用的符號,但可能還有其他的東西。 – derobert
- 1. makefile中-I和-L有什麼區別?
- 2. r值引用和l值引用有什麼區別? (CodeGen)
- 3. Perl中的\ L和lc函數有什麼區別?
- 4. [R = 301]和[R = 301,L]有什麼區別?
- 5. 鏈接時LD_LIBRARY_PATH和-L有什麼區別?
- 6. ruby中/ \ p {Alpha}/i和/ \ p {L}/i有什麼區別?
- 7. LD_LIBRARY_PATH和-rpath之間的區別是什麼
- 8. 有什麼區別`和$(Bash中有什麼區別?
- 9. 有什麼區別? :和||
- 10. &&和||有什麼區別?
- 11. 「/」和「/ *」有什麼區別?
- 12. 有什麼區別:。!和:r!?
- 13. ==和===有什麼區別?
- 14. Appender和〜有什麼區別?
- 15. $ @和$ *有什麼區別?
- 16. is和=有什麼區別?
- 17. #.00和#。##有什麼區別?
- 18. `==`和`is`有什麼區別?
- 19. '=='和'==='有什麼區別?
- 20. /和/#/有什麼區別?
- 21. | 0和~~有什麼區別?
- 22. `&`和`ref`有什麼區別?
- 23. ==和===有什麼區別?
- 24. ==和===有什麼區別?
- 25. `{}`和`[]`有什麼區別?
- 26. JavaScript和=== ===有什麼區別?
- 27. difftime和' - '有什麼區別?
- 28. =和==有什麼區別?
- 29. xtype和別名有什麼區別?
- 30. Mixpanel:識別()和people.identify()有什麼區別?
也許你正在考慮'-rpath-link'? – ams