我正在最近學習關於Mach-O文件的一些知識。當我學習懶惰符號&非懶惰符號時:誰確定符號是懶惰還是非懶惰?爲什麼?是什麼讓一個符號變成懶惰或非懶惰?
我想這可能是編譯器做...
更新: 我找到了一個答案關於我的問題,也許這是事實:
懶綁定由-z選項控制鏈接器,ld
。該選項將關鍵字作爲參數;關鍵字包括(其中包括):
lazy
生成可執行文件或共享庫,標記它告訴動態鏈接程序推遲函數調用解決的地步時,被調用的函數(延遲綁定),而不是在加載時間。
now
生成可執行文件或共享庫,標記它告訴動態連接器解決所有的符號時,程序啓動時,或共享庫鏈接到使用dlopen()
,而不是推遲函數調用分辨率該函數首次被調用的時間點。
延遲綁定是默認設置。如果您使用的是qcc
(正如我們推薦的那樣),請使用-W選項將-z選項傳遞給ld。例如,指定-Wl
,-zlazy
或-Wl
,-znow
。
參考:Optimizing the runtime linker
相關問題:Does Clang/GCC really support a delay loading feature?