GCC编译过程
2017-07-26 15:15
232 查看
GCC编译过程
单个文件的编译过程
#include <stdio.h> int main(void) { printf("Hello,World\n"); return 0; } gcc test.c -o test
编译过程分为四个阶段进行,即预编译(预处理)、编译、汇编和链接
预处理
gcc -E test.c -o test.i
预处理结果是将头文件内容插到test.c中,完成宏定义和include的展开工作
编译为汇编代码
gcc -S test.i -o test.s
经过编译参数进行优化,编译成汇编代码
汇编
gcc -c test.s -o test.o
通过汇编器将其汇编成目标文件
链接
gcc test.o -o test
负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件
检错
gcc -pedantic test.c -o test gcc -Wall test.c -o test gcc -Werror test.c -o test
编译动态库
将3个c源文件test1.c, test2.c test3.cgcc test1.c test2.c test.c -fPIC -shared -libtest.so
将test.c与动态库libtest.so链接生成test
gcc test.c -L. -ltest -o test # 可用命令 ldd test 查看
tips: 调用动态库时,已经用-I引入头文件,-L指定了动态库的路径,并用-l指定了引用的库名,用ldd查看时还是无法找到你引用的动态链接库,这时候可以修改LD_LIBRARY_PATH或者/etc/ld.so.conf文件来指定动态库的目录
编译静态库
# 创建和添加都使用ar命令, libtest.a 不存在时会自动创建, ar rcs libtest.a test1.o test2.o
相关文章推荐
- ubuntu14.04下编译linux uboot和kernel时提示arm-linux-gcc: not found 的解决过程
- go语言编译环境gccgo的搭建过程
- ok6410[001] Ubuntu 16.04[64bit]嵌入式交叉编译环境arm-linux-gcc搭建过程图解
- Linux下GCC编译的四个过程
- GCC编译过程
- gcc编译过程
- 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程
- GCC 编译过程/编译命令详解/静态库与动态链接库/ error:undefined reference to
- gcc程序的编译过程和链接原理
- 学c之gcc编译过程及其常用编译选项
- (GCC)编译程序过程及完成的工作
- GCC编译过程
- gcc编译C程序的过程
- Linux下gcc编译过程,静态链接库和动态链接库
- GCC编程四个过程:预处理-编译-汇编-链接
- GCC编译的四个过程
- GCC编译过程
- 在Ubuntu中编译、安装 gcc4.1.1 过程以及遇到的问题
- Linux系统GCC常用命令和GCC编译过程描述
- linux GCC编译过程