MacOSX配置基于Makefile的工程

如果您有基于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}

请注意:如果您的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

http://www.apple.com.cn/developer/mac/library/documentation/DeveloperTools/Conceptual/cross_development/Introduction/chapter_1_section_1.html#//apple_ref/doc/uid/10000163-BCICHGIE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值