关于Xcode上的Other linker flags
Targets選項下有Otherlinker flags的設置,用來填寫XCode的鏈接器參數,如:-ObjC-all_load -force_load等
首先,要說明一下Other Linker Flags到底是用來干嘛的。說白了,就是ld命令除了默認參數外的其他參數。ld命令實現的是鏈接器的工作,詳細說明可以在終端man ld查看。
如果有人不清楚鏈接器是什么東西的話,我可以作個簡單的說明。
一個程序從簡單易讀的代碼到可執行文件往往要經歷以下步驟:
源代碼 > 預處理器 > 編譯器 > 匯編器 > 機器碼 > 鏈接器 > 可執行文件
源文件經過一系列處理以后,會生成對應的.obj文件,然后一個項目必然會有許多.obj文件,并且這些文件之間會有各種各樣的聯系,例如函數調用。鏈接器做的事就是把這些目標文件和所用的一些庫鏈接在一起形成一個完整的可執行文件。
?
下面逐個介紹3個常用參數:
-ObjC:加了這個參數后,鏈接器就會把靜態庫中所有的Objective-C類和分類都加載到最后的可執行文件中
-all_load:會讓鏈接器把所有找到的目標文件都加載到可執行文件中,但是千萬不要隨便使用這個參數!假如你使用了不止一個靜態庫文件,然后又使用了這個參數,那么你很有可能會遇到ld:duplicate symbol錯誤,因為不同的庫文件里面可能會有相同的目標文件,所以建議在遇到-ObjC失效的情況下使用-force_load參數。
-force_load:所做的事情跟-all_load其實是一樣的,但是-force_load需要指定要進行全部加載的庫文件的路徑,這樣的話,你就只是完全加載了一個庫文件,不影響其余庫文件的按需加載
總結
以上是生活随笔為你收集整理的关于Xcode上的Other linker flags的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绝地求生僵尸模式规则介绍 绝地求生僵尸模
- 下一篇: iOS 使用 MailCore2