gcc 或 arm-linux-gcc 编程选项解析

http://blog.chinaunix.net/uid-20417436-id-3023950.html

一 过程控制选项:
    在编程的过程中。很少人会去在意编译的全部过程,分几个阶段?其实编译只是生成可执行文件众多步骤之一。对于一个c/cpp文件第一步是预处理,第二步是编译,第三步是汇编,第四步是链接。

1.(预处理)arm-linux-cpp 预处理程序 将*.c处理然后可以得到*.i(此举可用arm-linux-gcc -E)

2. (编译)/home/zylinux/home_work/install_tools/arm_gcc/usr/local/arm/4.3.2 /bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.2/cc1 将*.i 编译成 *.s(此举可用arm-linux-gcc -S)

3.(汇编)arm-linux-as 将*.s 汇编成 *.o/home/zylinux/home_work/install_tools/arm_gcc/usr/local/arm/4.3.2/bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.2/cc1 (此举可用arm-linux-gcc -c)

4.(链接)arm-linux-ld 将*.o 链接成ELF程序

    如果想看到全部过程,可以在编译的时候加上-v选项即可。
二 警告选项:
    -Wall 打开所有需要注意的警告信息。
    
三 调试选项:
    -g 这个地方稍微注意下,只有在编译的时候选了这个选项,调试的时候才能用gdb。

四 优化选项:
    -O 这个就是-O1。
    -O2。
    -O3。
五 链接选项:
    一个程序,往往是会包含启动代码(crtl.o,crti.o,crtend.o,crtn.o),以及一些标准库(-lgcc,-lgcc_eh,lc-lgcc,-lgcc_eh)。如果不需要这两个部分可以使用以下选项
    -nostartfiles(一般内核和bootloader编译的时候需要加上此类选项。)
    -nostdlib(一般内核和bootloader编译的时候需要加上此类选项。)

    -static (在链接的时候如果加上此选项,程序为静态链接,程序将会很大)
    -shared (在制作库的时候需要加上此项)
六 比较繁琐的链接选项(-Xlinker option)
    一般在arm-linux-gcc 中需要把选项参数传递给连接器的时候,需要使用两次-Xlinker,一次传选项,一次传参数,或者使用-Wl,如果有选项则后面用逗号。
    -Xlinker option(-Xlinker -rpath -Xlinker )    gcc -Xlinker -Ttext -Xlinker 0x000 hello.c
    -Wl,option(-Wl,-rpath, )                gcc -Wl,-Ttext,0x000 hello.c
    -u symbol 这个选项使得连接器取消这个符号在此文件中定义,从而链接库模块取得奇定义。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(33) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值