库
通过把函数进行打包,然后形成相应的库,供其他的主函数使用。
静态库
以.a进行结尾,把库的东西(头与库文件进行打包到之中)打包到可执行程序之中。
静态库不是使用相对的位置信息,直接的信息。
bank.o:bank.c
gcc -o bank.o -c bank.c //形成.o的文件。
libmymath.a:bank.o
ar -rc mymath.a bank.o //ar为归档案的工具,r(replace),c(create)创新。
把.o的文件打包成为.a,进行相关的处理内容。
静态库的使用需要想要的条件,需要搜索路径的确定。
直接搜索
gcc bank.c -L 路径 -l mymath // 第一个为lication(位置),Library(库的名称)
由于环境变量指定的目录(LIBRARY_PATH),进行把库的目录放在这里使用(export)进行变化。
把生成的库放在/usr/lib(整个系统的大库)或者/usr/local/lib(不同用户的库)
自己不要轻易使用自己书写的库放到系统的库文件之中,防止出现与系统库重复,造库的崩溃。
动态库
以.so结尾,使用相对的位置信息(以代码的最开始为0位置,然后进行累计的相关的操作)。就是在形成页表过程之中将其的地址放入进去,形成页表(储存了具体代码虚的地址,与真实的在磁盘的地址相对应的关系)。
多增加的-shared 表示生成共享数据库的相关的格式,-fPIC产生位置无关的码(相对的位置信息)。
使用静态库
搜寻相应的位置信息,这个与上面的基本上相同。
直接拷贝到/usr/lib之中,这里与上面也是相同的。或者更改(LD_LIBRARY_PATH)环境变量的参数地址。