
一、静态库的制作什么是库库文件是计算机上的一类文件可以简单的把库文件看成一种代码仓库它提供给使用者一些可以直接拿来用的变量、函数或类。库是特殊的一种程序编写库的程序和编写一般的程序区别不大只是库不能单独运行。库文件有两种静态库和动态库共享库区别是静态库在程序的链接阶段被复制到了程序中动态库在链接阶段没有被复制到程序中而是程序在运行时由系统动态加载到内存中供程序调用。库的好处1.代码保密 2.方便部署和分发静态库的制作(1) 命名规则Linuxlibxxx.alib前缀 (固定library 的缩写库)xxx库的名字自己起.a后缀 (固定)(2) 制作步骤gcc 获得 .o 文件将 .o 文件打包使用 ar 工具 (archive)ar rcs libxxx.a xxx.o xxx.or - 将文件插入备存文件 (replace的缩写)c - 建立备存文件 (create的缩写)s - 建立索引让链接器更快找到函数 (index的缩写)开始制作这里先给出测试代码非 vip 用户可以私聊我。1.将测试代码拖入 lesson04 文件夹中。2.树形显示当前目录的所有文件和子文件夹tree如果没有安装需要执行以下代码进行安装sudoaptinstalltree3.使用-c指令将 add.cdiv.cmult.csub.c 汇编成 .o 文件 (不链接)gcc-cadd.c div.c mult.c sub.c这里不汇编 head.h 是因为在预处理的时候会把头文件复制到源文件内。3.制作静态库ar rcs libcalc.a add.o div.o mult.o sub.o二、静态库的使用准备静态库将 lesson04 下的测试代码文件复制进 lesson05 文件夹cp-rcalc library../lesson05cp是 copy 的缩写功能复制文件/复制目录-r是 recursive 的缩写递归的功能递归复制遇到目录时不光复制目录本身连目录里所有的文件、子目录、子子目录… 全部一起复制过去。拷贝静态库文件 libcalc.a 到当前目录的 ./lib 下编译使用静态库的程序当前项目目录1.直接编译 main.c 文件gcc main.c-oapp2.这里提示缺少头文件是因为编译器只会在 main.c 所在目录下寻找头文件因此需要-I指定 include 包含文件的搜索目录:这次没有说找不到头文件了但是 main.c 里有函数未定义也就是说函数定义的库没有指出。3.利用-l指定所用的库名 ( 对于静态库 libcalc 来说库名是 calc )利用-L指定所用库的路径gcc main.c-oapp-I./include-L./lib-lcalc可以看到可执行文件 app 运行成功