C语言编译原理
https://m.toutiao.com/is/Jo689AQ/
源码编译工具gcc
为什么使用gcc
GCC介绍
GCC手册
AliOS Things物联网操作系统\day03\02-参考资料\Linux中文手册\GCC中文手册
gcc编译过程
体验keil下的编译过程
keil生成.o文件
keil 生成可执行文件
gcc常用的编译选项
常用选项描述-E预处理,开发过程中想快速确定某个宏可以使用“-E -dM”-c把预处理、编译、汇编都做了,但是不链接-S把.c文件汇编为.s文件-D定义宏-o指定输出文件-I指定头文件目录-L指定链接时库文件目录-l指定链接哪一个库文件-MD告诉预处理器输出一个适合 make 的规则,用于描述各目标文件的依赖关系,把依赖信息输出在文件中,文件名通过把输出文件名末尾的.o替换为 .d。同时继续指定的编译工作gcc -E main.c // 查看预处理结果,比如头文件是哪个gcc -E -dM main.c > 1.txt // 把所有的宏展开,存在1.txt里gcc -MD -c main.c -o main.o // 生成依赖文件 后面Makefile会用
简单编译测试
怎么编译多个文件
- 一起编译,链接
gcc main.c sub.c -o test
- 分开编译,统一链接
gcc -c main.c -o main.ogcc -c sub.c -o sub.ogcc main.o sub.o -o test
制作使用动态库
- 制作、编译
gcc -c main.c -o main.ogcc -fPIC -c sub.c -o sub.o # 生成位置无关代码gcc -shared sub.o (可以使用多个.o生成动态库) -o libsub.sogcc main.o -lsub -L . -o test
- 运行
- 先把libusb.so放到/lib目录,然后就可以运行test程序。如果不想把libusb.so放到/lib,也可以放在某个目录比如/a,然后如下执行:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/a ./test
制作、使用静态库
gcc -c main.c -o main.o gcc -c sub.c -o sub.o ar crs libsub.a sub.o gcc main.o libsub.a -o test
赞 (0)