一、关于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 |