Categories
c

gcc 编译 链接 动静态库

后缀

.c 源文件

.s 汇编文件 gcc -S main.c 生成汇编文件

.o 目标文件 编译后的二进制文件

.h 头文件 生命模块的对外接口

.a 静态连接库

.so 动态连接库

无 ELF文件 可执行文件

生成可执行文件流程

.c 添加 .h 文件作为外部模块接口声明来调用

编译生成目标文件 gcc -c xxx.c 生成 xxx.o

连接目标文件 生成可执行文件 ld xxx.o xxx1.x -o xxx

运行可执行文件 ./xxx

静态库生成及连接过程

编译生成目标文件 gcc -c static_lib.c 生成 static_lib.o

打包目标文件位静态文件库 ar rcs static_lib.a static_lib.o static_lib1.o static_lib2.o 将多个目标文件 打包为 static_lib.a

使用静态库 gcc xxx.c -lstatic_lib.a -o app -l 参数指定静态库

动态库生成及连接过程

编译源码生成动态库 gcc -shared -fPIC -o shared_lib.so share_lib.c

使用动态库编译可执行文件 gcc main.c ./shared_lib.so -o app

Leave a Reply