GCC从源码到可执行文件的步骤
第一步、预处理阶段:处理源码中的预处理语句(总是以#打头,如#include、#if #elif #end #error、#pragma pack|comment等);
gcc -E test.c -o test.i 或 gcc -E test.c
第二步、编译阶段:通过词法分析和语法分析,确认所有指令都符合语法规则后,将其转换成功能等效的汇编语言代码;
gcc -S test.i -o test.s
第三步、汇编阶段:使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为.o的目标文件中。
gcc -c test.s -o test.o
第四步、链接阶段:将各个模块之间相互作用的部分都处理好,使得各个模块之间能够正确地衔接。
gcc test.o -o test
写一个简单的helloworld:
创建hello.c
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
编写Makefile:
hello:hello.c
aarch64-linux-gnu-gcc hello.c -o hello
.PHONY:clean
clean:
-rm hello
把Makefile文件放在hello.c同目录下
cd到hello.c目录make
make
结果:
anmengyuan@ubuntu16-04:~/anmengyuan$ make
aarch64-linux-gnu-gcc hello.c -o hello
生成hello文件
root@s32v234evb:/mnt# ./hello
hello world
完成!