一.库文件
1.定义:库是一组预先编译好的方法的集合。
Linux系统存储的库的位置一般在:/lib和 /user/lib。在64位的系统上有些库也可能被存储在/user/lib64
的头文件一般会存储在/user/include下或其子目录下。比如说libc libstdc++
库是一些特定功能的实现,为用户提供一些调用接口。库有两种,分别是静态库和动态库之分,下图为库分别在不同系统下的呈现方式
1、静态库的生成
第一步:
将所有的功能代码编译成中间文件,注意,此处不应该有带main方法的源文件。命令如下:
第二步:命令ar
具体操作为
第3步.静态库的使用
使用的规则如下:
2、共享库的生成
1、动态库生成
使用的规则如下:
2、动态库的使用
共享库是不可执行的可执行文件,因为没有main方法,不知道从哪儿进,所以无法启动
第一步:
其使用方式和静态库一样先编译链接gcc -o main main.c -L路径 -l库文件名称,因为main方法在上一级目录,所以我们返回上一级目录去执行
但是我们发现还是不能运行,原因是什么呢?
这就要提到我们共享库的一个重要的特点了。共享库是运行的时候由操作系统单独加载的在这里我们只是执行了main方法,其中还没有包含库,只要main方法运行到一定阶段要使用库的时候,该共享库作为一个可执行文件由操作系统加载上来就可执行。
在这儿出现错误的原因就是我们并没有告诉操作系统这个共享库在哪儿,所以在执行的时候找不到库报错。同样的,因为我们没有给操作系统库的路径,他会默认在/lib或/user/lib路径下去寻找