库的本质是可执行的二进制码,库的作用就是复用。静态库在链接期间把库文件加到主程序中,而动态库则是运行时再加载进去。
程序从编译到运行的四态:
从gcc的--help中可以看到:
-E 预处理,不会编译、汇编和链接
-S 编译,不会汇编和链接
-c 编译和汇编,但不会链接
-o 输出可执行文件
而库则在链接期间被链接至汇编文件,然后生成可执行文件:
静态库:
1.链接期间会把库文件一起打包至可执行文件
2.生成可执行文件后,可以脱离环境执行
3.一起打包造成资源浪费
制作静态库:
首先在Ubuntu中建立下面的文件结构:
include目录用于保存头文件,libs保存静态库,res保存库的源文件。
目录结构如下: