Chinaunix首页 | 论坛 | 博客
  • 博客访问: 142029
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 876
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-09 10:56
文章分类

全部博文(20)

文章存档

2013年(20)

我的朋友

分类: LINUX

2013-04-10 10:30:56

转自:http://blog.csdn.net/yihui8/article/details/5950624
我们需要编译出运行在
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的值为空、0123
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

静态链接库文件

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

阅读(1624) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~