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  且如歌  阅读(898)  评论(0编辑  收藏  举报
TOP