摘录Xcode 交叉开发编程中选项


选择开发用的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}

请注意:如果您的makefile直接将LDFLAGS选项传递给ld,而不是传递给gcc,则应该将连接器的选项指定为LDFLAGS= -syslibroot ${SDK},因为ld不支持-Wl语法。

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


原文地址:https://www.cnblogs.com/qq78292959/p/2076938.html