如果您有基于makefile的工程,也可以在编译和连接命令中加入恰当的选项,来利用交叉开发的优势。接下来的部分将对此进行描述。
选择开发用的OS SDK
为了在makefile中选择SDK,需要在工程的编译和连接命令中加入恰当的选项,即为编译器加入-isysroot
选项;为连接器加入-syslibroot
选项。如果您使用GCC 4.0来编译和连接,则应该把两个选项同时加入到命令行中。
-isysroot
和-syslibroot
选项都要求指定您希望使用的SDK目录的全路径。最好的做法通常是创建一个makefile目录变量来指定这个路径。下面的实例显示了在一个简单的C程序中如何给makefile变量分配值:
SDK=/Developer/SDKs/MacOSX10.4.0.sdk |
CFLAGS= -isysroot ${SDK} |
LDFLAGS= -isysroot ${SDK} -Wl,-syslibroot,${SDK} |
SDK的目录位于/Developer/SDKs
路径下。您自己的连接器开关应自然包含程序需要的其它编译器和连接器的选项。
重要信息:GCC 4.0支持-isysroot
开关,但是没有在编译器的man页面上记述,因为这个功能在将来可能会发生变化。如果这个功能被正式加入到编译器中,man页面上就会加入相应的更新信息。GCC的早期版本不支持这个开关。
选择部署OS
在makefile中设置部署目标需要使用另外一个makefile变量,形式如下:
ENVP= MACOSX_DEPLOYMENT_TARGET=10.3 |
MACOSX_DEPLOYMENT_TARGET
选项的值确定了您的软件需要支持的最早的目标系统版本。在前面的例子中,目标系统为10.3
。在makefile中将该变量包含在您的编译和连接命令的前面,就可以了。例如,一个简单的C程序可能使用下面的连编命令:
testapp: main.o |
${ENVP} ${CC} ${LDFLAGS} -o testapp main.o |
main.o: |
${ENVP} ${CC} ${CFLAGS} -c main.c -o main.o |