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

上一篇下一篇

猜你喜欢

热点阅读