Compiling, Linking and Building
2017-08-20 本文已影响11人
V_coa
首先写一段 C
代码,如下:
#include <stdio.h>
int main() {
printf("Hello, world\n");
return 0;
}
编译代码
gcc hello.c
默认生成一个 a.out
的文件, 然后执行 ./a.out
, 就打印出 Hello,world
如果想要特殊的输入文件可以先执行:
gcc -o hello hello.c
分开编译和链接的操作
-c 只进行编译
gcc -c -g hello.c
-o 进行链接操作,生成可执行文件
gcc -g -o hello hello.o
多文件的编译和链接
gcc -o target file1.c file2.c
通常会编译每个源文件,最后把它们链接成一个可执行文件
gcc -c file1.c
gcc -c file2.c
gcc -o target file1.o file2.o
gcc.png
GCC 编译器 生成可执行文件 有 4 个步骤如上图,例如 gcc -o hello hello.c
,包含下面几个步骤
1.预处理,通过预处理器,把头文件 includes 进来 headers 和 展开宏(#define)
gcc hello.c > hello.i
结果生成中间文件 hello.i
包含了展开的代码
2.把上面生成的中间代码生成汇编代码
gcc -S hello.i
-S
把中间代码生成目标文件 hello.i
3.汇编器把汇编代码转换成机器代码生成 hello.o
文件
as -o hello.o hello.s
4.最后就链接代码,生成可执行文件
ld -o hello hello.o
Make