一般常说的“编译”包含预编译、编译,汇编,链接4个动作。使用gcc编译时,如果不带任何编译选项,gcc默认会执行4个动作最后生成a.out可执行模块。在某些情况下使用gcc的选项很有用。
一,查看详细的编译过程
-v 选项:有两个作用。除了查看gcc版本之外,在编译时带上该选项可以看到详细的编译过程。比如分别执行编译,汇编,链接等命令,并且查看到使用的标准启动文件crt1.o, crti.o等,标准库文件libc,libgcc等
gcc -v -o app hello.c
二,查看预处理的结果
-E 选项:仅预编译。该选项分析代码时很有用。如果宏定义很复杂,比如宏定义嵌套时,使用该选项可以看到宏展开后具体值。
gcc -E hello.i hello.c
另外在预处理结果文件中可以看到,其他头文件中数据类型和函数声明在结果文件中的声明。
三,将编译和链接分开
-c 选项:指定仅编译和汇编,生成的结果是目标文件。gcc默认执行便和链接,如果一个工程中有多个源文件,使用该选项把编译和链接动作分开,提高编译效率。
gcc -c -o aaa.o aaa.c
gcc -c -o bbb.o bbb.c
gcc -o app aaa.o bbb.o
四,其他常用选项
-S 选项:仅编译,不执行汇编和链接,生成的结果是汇编代码文件。
-static 指定编译时静态链接库文件。
五,嵌入式常用选项
在编译嵌入式裸机程序时,使用-nostdlib和-nostartfiles选项,指示不要使用标准启动文件和标准库文件。
来源:CSDN
作者:+竹喧
链接:https://blog.csdn.net/xxxlman/article/details/104731984