arm-linux-gcc 常用参数讲解 gcc编译器使用方法

news/2024/7/10 4:52:33 标签: 编译器, gcc, 汇编, 优化, linux, 扩展

【转】 arm-linux-gcc 常用参数讲解 gcc编译器使用方法

 

我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。
在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段:
1. 预处理(Pre-Processing)
2. 编译(Compiling)
3. 汇编(Assembling)
4. 链接(Linking)
Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为 今后的调试做好准备。和其它常用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。

以文件example.c为例说明它的用法
0. arm-linux-gcc -o example example.c
   不加-c、-S、-E参数,编译器将执行预处理、编译、汇编、连接操作直接生成可执行代码。
    -o参数用于指定输出的文件,输出文件名为example,如果不指定输出文件,则默认输出a.out

1. arm-linux-gcc -c -o example.o example.c
   -c参数将对源程序example.c进行预处理、编译、汇编操作,生成example.0文件
   去掉指定输出选项"-o example.o"自动输出为example.o,所以说在这里-o加不加都可以

2.arm-linux-gcc -S -o example.s example.c
   -S参数将对源程序example.c进行预处理、编译,生成example.s文件
   -o选项同上

3.arm-linux-gcc -E -o example.i example.c
   -E参数将对源程序example.c进行预处理,生成example.i文件(不同版本不一样,有的将预处理后的内容打印到屏幕上)
   就是将#include,#define等进行文件插入及宏扩展等操作。
  
4.arm-linux-gcc -v -o example example.c
加上-v参数,显示编译时的详细信息,编译器的版本,编译过程等。

5.arm-linux-gcc -g -o example example.c
-g选项,加入GDB能够使用的调试信息,使用GDB调试时比较方便。

6.arm-linux-gcc -Wall -o example example.c
-Wall选项打开了所有需要注意的警告信息,像在声明之前就使用的函数,声明后却没有使用的变量等。

7.arm-linux-gcc -Ox -o example example.c
-Ox使用优化选项,X的值为空、0、1、2、3
0为不优化优化的目的是减少代码空间和提高执行效率等,但相应的编译过程时间将较长并占用较大的内存空间。

8.arm-linux-gcc   -I /home/include -o example example.c
-Idirname: 将dirname所指出的目录加入到程序头文件目录列表中。如果在预设系统及当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。

9.arm-linux-gcc   -L /home/lib -o example example.c

-Ldirname:将dirname所指出的目录加入到库文件的目录列表中。在默认状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后再到系统预设路径中寻找。

10.arm-linux-gcc –static -o libexample.a example.c

静态链接库文件

除了上面提到的之外,还有类似控制连接选项,目录选择等参数,这里就不一一提到了,哪位网友需要时可以详细的阅读相关资料。


http://www.niftyadmin.cn/n/808135.html

相关文章

教你十分钟构建好 SpringBoot + SSM 框架

目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐。而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了大众的青睐 而本文,我将教大家如何在 intellij idea 中快…

Eclipse配置及问题解决 syntax highlighting disappeared for one of my files and Indexer missing many classes

大的C project导入到eclipse之后都会有一些问题,别特是语法高亮没有,一堆红色浪线无法解析等。本文解决这些问题,让你用的更爽。注意,目前测试的版本中最新的为oxigen,但是只有luna是好用的,所以建议用luna…

使用PostMessage(WM_QUIT)退出程序时导致的内存泄漏! (转)

使用PostMessage(WM_QUIT)退出程序时导致的内存泄漏! (转)[more]信息产业部电子第30研究所 魏刚 我最近在程序开发中发现我的一个程序运行一段时间以后,就会导致系统崩溃,初步分析以后,得出得结论是有内存泄漏。 经使用NuMega Bou…

浅谈人工智慧 (转)

浅谈人工智慧 (转)[more] 在去年十二月的杂志中,笔者曾经就游戏的人工智慧和各位探讨过一些人工智慧的设计问题,没有想到在杂志 出刊的几天後,就从网路上接到几位读者询问这些问题的信件,因此趁着大家对前一篇文章的记忆还深的情况…

两个经典的RGBYUV转换函数

虽然在开始用了swscale之后,我就很少用这个方式去对RGB和各种YUV格式做互相之间的转换,但是还是偶尔会有用到的时候,僻如说:要去一些特定程序进行简化的时候(ffmpeg和swscale总归大了一点),所以…

我的MYSQL学习心得(十二) 触发器

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五&…

[战略]软林至尊-群目标和具体措施-V1.0

郑重声明:本文是对软林至尊群的目的和具体措施等事项和问题的解说,暂时由Fans.Lei(240370818)独自完成,参考了小闫和悠浪等好友的看法。 本文面向的对象主要是软林至尊群现有成员和潜在成员。1.群名称软林至尊2.群号码1756800273.面向人群未来的 牛逼程序…

centos 7 sogou input

链接: http://pan.baidu.com/s/1gfNugyZ 密码: cz3v)为了方便,我已经将编译好了rpm,打包成fcitx.tar.gz。如图: 安装步骤: 1.解压fcitx 2.安装fcitxsougou 注意yum需要root用户(我已安装,仅作演示)。若有依赖问题&…