嵌入式c语言编译器,嵌入式Linux下最常用的C语言编译器GCC命令详解.pdf

嵌入式 Linux下最常用的C语言编译器GCC命令详解

ieee I EEE 前天

GCC(GNU Compiler Collection)是 Linux下最 常用 的C语言编译器 ,是 GNU项 目中

符合A NSI C标准的编译系统,能够编译用C、C ++和Obj ect C等语言编写的程序 。同

时 它 可 以 通 过 不 同 的 前 端 模 块 来 支 持 各 种 语 言 ,如 Java 、 Fortran 、 Pascal 、

Modula-3和Ada等。

穿插一个玩笑 :GNU意思是GNU’s no t Unix而非角马。然而GNU还是一个未拆分

的连词 ,这其实是一个源于 hacker的幽默 :GNU是一个 回文游戏 ,第一个字母G是凑

数的 ,你当然可以叫他做A NU或者 BNU。下面开始。

一.CC编译程序过程分 四个阶段

◆ 预处理 (Pre-Processing)

◆ 编译(Compiling)

◆ 汇编(Assembling)

◆ 链接(Linking)

Linux程序员可以根据 自己的需要让GCC在编译 的任何 阶段结束转去检查或使用编译

器在该阶段的输 出信息 ,或者对最后生成的二进制文件进行控制 ,以便通过加入不 同

数量和种类的调试代码来为今后的调试做好准备 。如 同其他的编译器 ,GCC也提供了

灵活而强大的代码优化功能 ,利用它可以生成执行效率更高的代码。

GCC提供了30多条警告信息和三个警告级别 ,使用它们有助于增强程序的稳定性和可

移植性 。此外 ,GCC还对标准的C和C ++语言进行了大量的扩展 ,提高程序的执行效

率 ,有助于编译器进行代码优化 ,能够减轻编程的工作量。

二.简单编译命令

我们以Hello world程序来开始我们的学习。代码如下 :

/* hello.c */

#include

int main(void)

{

printf ("Hello world!\ n");

return 0;

}

1. 执行如下命令 :$ gcc -o hello hello.c

运行如下 :$ ./ hello

输 出 :Hello,world!

2. 我们也可以分步编译如下 :

(1) $ gcc – E hello.c -o hello.i

//预处理结束

//这时候你看一下hello.i ,可以看到插进去了很多东西。

(2) $ gcc –S hello.i

//生成汇编代码后结束

(3) $ gcc –c hello.c

或者 :

$ gcc -c hello.c –o hello.o

或者 :

$ gcc -c hello.i -o hello.o

//编译结束

//生成 hello.o文件

(4) $ gcc hello.o –o hello.o

或者 :

$ gcc –o hello hello.c

//链接完毕 ,生成可执行代码

3. 我们可以把几个文件一 同编译生成 同一个可执行文件。

比如 :一个工程有 main.c foo.c def.c生成foo的可执行文件。

编译命令如下 :

$ gcc –c main.c foo.c def.c –o foo

或者 :

$ gcc –o foo main.c foo.c def.c

三.库依赖

函数库是一些头文件 (.h)和库文件 (.so或者.a)的集合。Linux下的大多数 函数都默认将

头文件放到/ usr/ include/ 目录下 ,而库文件则放到/ usr/ lib/ 目录下 ,但并非绝对如

此。因此GCC设有添加头文件和库文件的编译选项开关。

1. 添加头文件 :-I

例如在/ home/work/ include/ 目录下有编译foo.c所需头文件 def.h ,为了让 GCC能

找到它们 ,就需要使用-I选项 :

$ gcc foo.c -I / home/work/ include/def.h -o foo

2. 添加库文件 :-L

例如在/ home/work/ lib/ 目录下有链接所需库文件 libdef.so ,为了让 GCC能找到 它

们 ,就需要使用-L选项 :

$ gcc foo.c – L / home/work/ lib – ldef.a –o foo

说 明 :-l选项指示GCC去连接库文件 libdef.so。Linux下的库文件命名有一个约定 ,

即库文件以lib三个字母开头 ,因

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值