01gcc入门(上)
n 基本框架:
a) Gcc 主要特征
b) Gcc编译四个步骤:预处理---》编译---》汇编---》链接
c) Gcc常用选项
d) Gcc编译多文件
- 1. Gcc主要特征
(1) gcc支持多种硬件平台;
(2) 能够跨平台交叉编译,可以编译出能够在其它硬件平台上运行的程序。
- 2. Gcc编译四个步骤
四个步骤:预处理---》编译---》汇编---》链接
(1) hello.c-à预处理器(cpp)-àhello.i--à编译器(ccl)-àhello.s(汇编程序)-à汇编器(as)-àhello.o(可重定位目标程序)
(2) hello.o和库文件--à链接器(ld)---à可执行程序
- 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 显示编译过程的详细信息,当程序有错误时,可以用来帮助查找错误。
- 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文件对其管理。
- 一些细节:
gcc --version 查询gcc的版本
which gcc 查询gcc的安装目录