代码编译经过几个阶段
1、预处理(a.去注释 b.宏替换 c.头文件展开 d.条件编译)
2、编译(c->汇编)
3、汇编(汇编 -> 可重定向二进制目标文件)
4、链接(链接 -> 多个.o , .obj -> 合并形成一个可执行.exe)
而代码在链接过程中,有两种库(静态库与动态库)
动态链接 - 动态库
静态链接 - 静态库
Linux:.so(动态库) , .a(静态库)
windows:.dll(动态库),.lib(静态库)
动态链接:将库中需要的方法的地址,直接填入可执行程序中,建立关联(节省资源)
静态链接:将库中方法的实现,拷贝到可执行程序中(占用资源)
linux下,gcc,g++默认形成的可执行程序是动态连接的
假如想要生成静态链接的库
gcc 文件 -o 想生成文件 -static 静态链接库
linux中的静态库可能需要我们下载
yum install -y glibc-static c语言静态库
yum install -y libstdc++-static c++静调库
普通用户下载不了可以在前面加sudo