编译命令
gcc/clang -g -o2 -o -c test test.c -i... -l... -l -g : 输出文件中的调试信息 -o : 对输出文件做出指令优化,默认是o1, o2优化更多 -c : 可以编译成 -o : 输出文件 -i : 指定头文件 -l : 指定库文件位置 -l : 具体使用哪些库
编译流程
- 预编译
- 编译
- 链接, 动态链接/静态链接
编写文件 add.c
#include <stdio.h> int add(int a, int b) { return (a+b); }
clang -g -c add.c // 生成一个指定的add.o的文件
libtool -static -o libmylib.a add.o // 生成一个libmylib.a的文件,必须要lib开头
编写文件 add.h
int add(int a, int b);
编写最终程序
#include <stdio.h> #include "add.h" int main(int argc, char *argv[]) { int c = add(1, 2); printf("c: %d", c) return 0; }
clang -g -o testlib testlib.c -i . -l . -lmylib
最终生成 testlib 的文件, libmylib.a 的库必须要去掉 lib开头和结尾的.a
clang -g -o testlib testlib.c -i . -l . -lmylib // -i . 头文件在当前目录的意思, -l . -lmylib是指定文件的意思
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/600523.html