首页 > 代码库 > 静态库链接

静态库链接

回到刚才我们的hello world 分析中,这个程序之所以有用,是因为有输出。也就是说把hello world 输出到屏幕上。

 

那么他是如何做到这一点的呢?最简单的办法 就是使用os 提供的应用程序编程接口。也就是api。

 

一般情况下,一种语言的开发环境往往会附带有 language library 就是语言库。这些库就是对操作系统的api的封装。

 

比如我们的hello world中 使用标准库的printf 来输出 hello world 这个文字信息,哪实际上 prinf 这个函数在对字符串做了

 

一些必要的处理之后,最后就会调用操作系统的api了。在linux中。就是调用的 write的系统调用。

 

 

当然了,c语言库里面 还有很多函数 是不需要调用系统api的  比如strlen()函数。

 

所以静态库可以简单的看成一组目标文件的集合。就是很多目标文件经过压缩打包以后形成的一个文件。

 

比如说 我们跑到 ubuntu下面的usr/lib 目录下面 输入命令

 

ls -l *.a

 

 

实际上这个.a 就是一个ubuntu下面重要的静态库。 我们用ar -t 分析它 发现这个里面 实际上包含了若干的.o文件。

 

当然了实际上 在现在的ubuntu中 很多时候都是动态加载了。比如我们的hello world程序

 

 

这些so库就是动态链接库。

静态库链接