嵌入式学习(二)
gcc命令的使用
1简介
GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了。
2简单编译
示例程序如下:
//test.c
#include <stdio.h>
int main(void)
{
printf(“Hello World!\n”);
return 0;
}
这个程序,一步到位的编译指令是:
$gcc test.c -o test
会输出一个test文件,输入如下指令即可编译
$./test
就可以看到Hello World!
直接编译的指令是:
$gcc test.c
会默认输出一个a.out文件
直接编译
$./a.out
也可以得到结果Hello World!
实质上,上述编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。
gcc常用编译命令选项
假设源程序文件名为test.c。
-
无选项编译链接
用法:gcc test.c
作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 -
选项 -o
用法gcc test.c -o test
作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 -
选项 -E
用法:gcc -E test.c -o test.i
作用:将test.c预处理输出test.i文件。 -
选项 -S
用法:gcc -S test.i
作用:将预处理输出文件test.i汇编成test.s文件。 -
选项 -c
用法:gcc -c test.s
作用:将汇编输出文件test.s编译输出test.o文件。 -
选项 -g
用法:gcc -g test.c -o test.exe
作用:将test.c输出为test.exe文件供gdb调试使用
参考文章:
- gcc的安装及使用
https://blog.csdn.net/lucifa_li/article/details/79483449 - gcc命令行调试
https://blog.csdn.net/l2580258/article/details/71079291?ops_request_misc=&request_id=&biz_id=102&utm_term=Ubuntugccgdb%E8%B0%83%E8%AF%95&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-71079291.142v5pc_search_result_control_group,143v6register&spm=1018.2226.3001.4187 - Makefile文件与make命令 https://blog.csdn.net/qq_35451572/article/details/81092902?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164834460616782092998265%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164834460616782092998265&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-81092902.142v5pc_search_result_control_group,143v6register&utm_term=Ubuntumakefile&spm=1018.2226.3001.4187