首页 > 代码库 > 01gcc入门(上)

01gcc入门(上)

n  基本框架:

a)         Gcc 主要特征

b)         Gcc编译四个步骤:预处理---》编译---》汇编---》链接

c)         Gcc常用选项

d)         Gcc编译多文件

 

  1. 1.      Gcc主要特征

(1)       gcc支持多种硬件平台;

(2)       能够跨平台交叉编译,可以编译出能够在其它硬件平台上运行的程序。

 

  1. 2.      Gcc编译四个步骤

   四个步骤:预处理---》编译---》汇编---》链接

(1)     hello.c-à预处理器(cpp)-àhello.i--à编译器(ccl)-àhello.s(汇编程序)-à汇编器(as)-àhello.o(可重定位目标程序)

(2)     hello.o和库文件--à链接器(ld)---à可执行程序

 

  1. 3.      Gcc常用选项

(1)       -o  产生目标(.i、.s、.o、可执行文件)   记忆技巧:iso  ESc

(2)       -E  预处理                            

(3)       -S  产生汇编文件(大写的S)

(4)       -c  取消链接步骤,生成.o文件

(5)       -Wall 编译时对错误发出警告,编译的时候最好加上 -Wall(warning all)。

(6)       -I  添加头文件的搜索路径

(7)       -L  添加库文件的搜索路径

(8)       -llib  链接lib库

(9)       -g    在目标文件中嵌入调试信息,方便gdb调试。

将一些debug信息存放到目标文件和可执行文件里的一个符号表 (symbol table) 里。

 

  *   gcc  -v  显示编译过程的详细信息,当程序有错误时,可以用来帮助查找错误。

 

  1. 4.      Gcc编译多文件

  例子:假如有三个文件:hello_fn.h  hello_fn.c  main.c

(1)     一次性编译:   gcc  hello_fn.c  main.c   -o   newhello

(2)     独立编译:

          Gcc  -Wall  -c  main.c  -o  main.o

          Gcc  -Wall  -c  hello_fn.c  –o  hello_fn.o

          Gcc  -Wall   main.o  hello_fn.o  -o  newhello

独立编译的方法较好,在大的项目工程中,只需对更改过的文件重新编译,这样可以节省相当多的时间。

在具体工程实践中需要用Makefile文件对其管理。

 

  1. 一些细节:

gcc  --version  查询gcc的版本

which  gcc    查询gcc的安装目录