1.预处理 -E —— xx.i (中间文件)
2.编译 -S —— xx.s (汇编文件)
3.汇编 -c —— xx.o (目标文件)
4.链接 —— xx (可执行文件)
1.预处理
gcc -E Gcc_test.c -o Gcc_test.i
//将.c文件生成.i(中间文件)
// 处理所有以#开头的语句(头文件、宏定义、条件编译),不检查语法错误
// 编译器在预处理结束时就停止编译
进行预处理 -E,生成xx.i文件(.i是中间文件)
2.编译
gcc -S test.i -o test.s
//这一步的主要步骤是将.i(中间文件)文件编译生成.s(汇编文件)
//检查是否有语法错误,确认无误后编译生成汇编语言
3.汇编
gcc -c test.s -o test.o
//将.s(汇编文件)文件生成.o(二进制的目标文件)
//也就是将汇编文件翻译成计算机认识的二进制的目标文件
4.链接
gcc test.o -o test
//将.o(二进制的目标文件)生成可执行文件
//链接系统库函数 ,没有特别指定时,gcc会到系统默认的搜索路径“/user/lib”
//下进行查找,也就是链接到“lib.so.6”库函数中去
——————————————————
不分解,一次即可编译成功:
gcc tets.c -o test
https://so.csdn.net/so/search/s.do?q=gcc%E7%BC%96%E8%AF%91%E6%B5%81%E7%A8%8B&t=&u=
https://blog.csdn.net/chengyq116/article/details/87856641