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

摘录Xcode 交叉开发编程中选项相关推荐

  1. php 代码符号,网站开发编程中的特殊符号处理_php

    1 php中单引号与双引号的区别 在PHP中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' "I am a string in d ...

  2. php符号教程,PHP教程:网站开发编程中的特殊符号处理_php

    1 php中单引号与双引号的区别 在PHP中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' http://www.gaodaima.com/ ...

  3. Linux下高性能网络编程中的几个TCP/IP选项

    Linux下高性能网络编程中的几个TCP/IP选项 转自:http://blog.chinaunix.net/u/12592/showart.php?id=2064847 最近在新的平台上测试程序,以 ...

  4. Socket编程中的强制关闭与优雅关闭及相关socket选项

    以下描述主要是针对windows平台下的TCP socket而言. 首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包( ...

  5. Java开发人员在编程中常见的雷!

    身为一名Java从业人员,其职场生涯就是一边踩"坑",一边上升的过程.这个过程中不仅要学会修改无数bug,也要学会越过很多"坑".今天,千锋老师为大家分享一些J ...

  6. 分享一些Java开发人员在编程中最容易踩雷的地方!

    身为一名Java从业人员,其职场生涯就是一边踩"坑",一边上升的过程.这个过程中不仅要学会修改无数bug,也要学会越过很多"坑".今天,小千为大家分享一些Jav ...

  7. 一些Java开发人员在编程中常见的雷!

    身为一名Java从业人员,其职场生涯就是一边踩"坑",一边上升的过程.这个过程中不仅要学会修改无数bug,也要学会越过很多"坑".今天,小千为大家分享一些Jav ...

  8. R 编程中的 LOOCV(留一法交叉验证)

    LOOCV(Leave One Out Cross-Validation)是一种交叉验证方法,其中每个观察被视为验证集,其余(N-1)个观察被视为训练集.在 LOOCV 中,模型的拟合完成并使用一个观 ...

  9. linux脚本怎么获取参数,在Bash shell脚本编程中,如何正确无误获取到“脚本选项参数”和“脚本参数”呢?...

    Linnux 中有些命令的功能非常强大,主要是因为它支持的命令选项比较多.如:[ip]命令可以配置IP地址.路由条目的配置管理操作非常完善,该命令就可以完成[ifconfig]和[route]命令实现 ...

最新文章

  1. PyTorch神经网络集成技术
  2. 基于JavaWeb实现在线租房系统
  3. HDU1598最小生成树+贪心处理
  4. 验算神经网络谐振子模型的第二组数据
  5. 3.Lucene3.x API分析,Director 索引操作目录,Document,分词器
  6. 5位最具影响力的程序员
  7. BZOJ1821 [JSOI2010]Group 部落划分 Group Kruskal
  8. WSL2 即将普遍可用,Linux 内核提供方式改变
  9. 电脑出现 flash update failed 解决方法
  10. Java中用split函数进行分割字符串。
  11. 使用easyx来实现按钮功能
  12. Indented Inventory BOM如何转为最终的单层采购BOM
  13. arm 汇编指令 CPS
  14. php的cmf框架哪个比较好,不要用这个CMF ThinkCMF内容管理框架,做最简约的ThinkPHP开源软件...
  15. android 手机安装windows7,安卓手机安装运行Win7系统教程(图文)
  16. 计算机十年歌曲,抖音还有多少个十年原唱是谁 歌词一览
  17. Qt ui 到底是什么?
  18. 【附源码】计算机毕业设计java学生网上请假系统设计与实现
  19. 移动硬盘损坏,数据能恢复吗
  20. allegro如何快设置快捷键旋转器件

热门文章

  1. mysql密码登陆过程_mysql单实例忘记密码如何登陆过程
  2. vbreport8.wpf.viewer 个别电脑不显示_【电脑手机小技巧】新买的电脑,第一次开机最好要这样设置...
  3. 内网通mac能用吗_Mac「随航」除了可以当Mac显示屏,还可以这样用
  4. matlab db函数_图灵斑图与反应扩散方程——Matlab的实现
  5. unity如何得到所有子对象_Unity3D研究院之自动计算所有子对象包围盒(六)
  6. python周志_python第一周总结
  7. 卷积神经网络训练准确率突然下降_从MobileNet看轻量级神经网络的发展
  8. 1概率论与数理统计_浙江大学B站
  9. linux实验二目录与文件查看相关命令,Linux文件和目录管理相关命令(二)
  10. 基于信息熵确立权重的topsis法_一种基于加权秩和比法的光伏并网逆变器多性能指标评价方法研究...