库是什么
在OS上运行的程序基本上都需要使用库,使用库可以提高开发效率。 库是一个二进制文件,包含的代码可以被程序调用。比如 标准C库、数学库、线程库等等。库有源码,可下载后编译;也可以直接安装二进制包。库的存放路径一般是/lib /usr/lib
静态库的特点
编译(链接)时,把静态库中的相关代码复制到可执行文件中。
优点:
- 程序中已包含代码,运行时不再需要静态库。
- 程序运行时无需加载库,运行速度更快。
缺点
-占用更多的磁盘空间
-静态库升级后,程序需要重新编译链接。
静态库的创建(1)
以hello world 为例。首先编写库源码hello.c,编译生成hello.o文件
编译后
静态库的创建(2)
创建静态库 hello
参数解释:
ar crs 为固定操作符,不做解释。
libhello.a 为静态库文件名称,lib xxxx.a 文件名以lib开始,.a结束,为固定格式。xxxx一般以函数的功能命名,如math\sum等。 hello.o为静态库中所包含的目标文件,本例中只有一个目标文件,但可以有多个。
可以查看静态库中符号信息
book@100ask:~/static$ nm libhello.a