讲解思路目录:
1.1 GCC特点:
1.2 GCC基本用法:
简单测试:
1) touch hello.c
创建一个hello.c文件.
touch命令不过多解释,详情请点击打开链接
也可以直接使用vim创建,此处为了多练习命令.
2) vim hello.c
2.1 GCC编译流程
对hello.c的编译过程进行拆解:
1) 预处理为.i文件
gcc -E hello.c -o hello.i
2) 编译成汇编程序.s
gcc -S hello.i -o hello.s
3) 将汇编文件通过汇编编译成为二进制文件.o
gcc -C hello.s -o hello.o
4) 最后将二进制文件链接成可执行程序
gcc hello.o -o hello
注意执行gcc hello.o -o hello 时,会出现如下问题:
原因在第3步时,汇编hello.s汇编成二进制hello.o时main函数冲突造成的
解决办法使用如下命令进行汇编:
将第3步改为 as hello.s -o hello.o
其它的一样.
为什么用as呢?
as命令GNU组织推出的一款汇编语言编译器,它支持多种不同类型的处理器。
来自: http://man.linuxde.net/as
具体问题请看大神解析点击打开链接
2.1.1 gcc基本规则
2.2 gcc 编译选项
1)程序优化
2)产生调试工具
3)头文件路径寻找
gcc -I /myroot hello.c -o hello
4)错误信息
5)宏
例如:
程序中将define注释掉
正常情况下是不会运行printf的,因为程序中没有定义宏PRINT. 如下:
在编译时指定使用PRINT宏,则程序会运行printf. 如下