Linux GCC编译

.a 静态库(打包文件 由多个.o文件打包而成)
.c 未经过预处理的C源码
.h C头文件
.i 经过预处理的C源码(将头文件内容加载到c文件中)
.o 编译之后产生的目标文件
.s 生成的汇编语言代码
.so 动态库(动态链接库)

 // hello.c
 
  #include <stdio.h>
  int  main()
   {
    printf("hello, world!/n");
    return 0;
  }

直接生成可执行程序:gcc hello.c
文件:a.out

上述编译过程分为四个阶段进行的: 预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。

1. 生成预处理后的文件 hello.i

$ gcc -E hello.c -o hello.i == gcc -E hello.c == gcc -E -o hello.i hello.c

2. 生成汇编文件 hello.s

$ gcc -S hello.c -o hello.s == gcc -S hello.i -o hello.s == gcc -S hello.c == gcc -S hello.i == gcc -S -o hello.s hello.c

3. 生成目标文件 hello.o

$ gcc -c hello.c -o hello.o == gcc -c hello.c == gcc -c hello.i == gcc -c hello.s == gcc -c -o hello.o hello.c

4. 生成可执行文件 hello

$ gcc -o hello hello.c == gcc hello.c == gcc -o hello.i == gcc -o hello.s == gcc -o hello.o

linux下静态库的生成比较方便。在生成目标文件后用 ar 打包即可。在中大型项目中一个模块一般会做成一个静态库,以方便管理、提高编译、链接效率。
linux下动态库的生成通过GCC选项实现。

posted @ 2016-12-28 22:14  且如歌  阅读(917)  评论(0)    收藏  举报
TOP