天天看點

Xcode編譯工具(三)

Xcode編譯工具(三)

2013年3月21日 阿呆

一、關于Other Linker Flags

xcode中,在“Targets”選項下有Other Linker Flags選項,在這裡可以填寫xcode連結器的參數,如:-ObjC、-all_load、-force_load等。

二、xcode連結器

xcode采用的連結器為ld–GNU,ld是GNU工具鍊中的一個軟體,主要用于将obj檔案連接配接成可執行檔案。同時你能使用自己的腳本來控制ld的行為,這是你可以通過-T選項選擇你的腳本而不是預設的。可以通過

1
      
man ld
           

了解更多。

三、主要參數

這裡要說的主要參數是ld工具的參數,也是在Other Linker Flags裡常用到的參數。

1.-ObjC

當使用ObjC寫的靜态類别庫(Objective-C static library that contains categories),在程式編譯連結時,如果不在Other Linker Flags中填寫-ObjC,往往會報錯,出現”selector not recognized”。部落客無力,原因看不太懂。具體原因請查閱xcode幫助文檔。

-ObjC的作用是加載用ObjC實作的類、類别等所有成員。

2.-all_load

強制連結器加載所有包含非ObjC的目标文檔。

3. -force_load

加載指定的目标文檔。-force_load後面需要文檔路徑,如:

1
      
-force_load $(TARGET_BUILD_DIR)/libB.a