龙空技术网

一步一步写makefile(二) 静态链接库

皇室大西瓜 156

前言:

此刻咱们对“ubuntu生成共享链接库”大概比较重视,大家都需要分析一些“ubuntu生成共享链接库”的相关文章。那么小编同时在网摘上网罗了一些对于“ubuntu生成共享链接库””的相关内容,希望你们能喜欢,各位老铁们快快来学习一下吧!

上一次我们已经从零开始写了一个makefile,用于编译我们的工程,今天我们来学习点新东西,静态链接库。

程序的函数库分为静态链接库和动态链接库。

静态链接库,顾名思义,静态的,也就是在程序执行前就已经加入到目标文件中了。

动态链接库,相对应的,是在程序执行过程中加载执行的函数库。

库文件其实就是一系列打包的编译好的代码和数据,可以将内部实现细节隐去,只留出接口给其他用户,方便使用。

就好像一台电视机,内部的电路制造细节我们完全没有必要知道,我们只需要知道开关在哪里,遥控器怎么用就好了。库文件也是类似的功能。

简单了解了库文件,接下来我们来上手实践一下。如上节课一步一步写makefile所讲的,我们手头这么几个文件,main.c tool1.c tool2.c tool1.h tool2.h,我们想把tool1和tool2中的函数做成库函数,供main函数调用,最终目的是删掉tool1.c和tool2.c,使用生成的库文件来调用tool1.c和tool2.c里面的函数。

tool1.c和tool2.c内容如下

 #include <stdio.h>   #include "tool1.h"   void mytool1(void)   {    printf("tool1 running\n");  } #include <stdio.h>   #include "tool2.h"   void mytool2(void)   {    printf("tool2 running\n");  }

我使用的是ubuntu,直接打开终端,把我们上次讲的tool1.o和tool2.o制作成库函数,注意下库函数的命名规则,默认的是lib为前缀,加上库名,后缀是.a,这里我们使用test作为静态库的名字。

ar rcs tool1.o tool2.o libtest.a

生成libtest.a后,我们就开始编写makefile来将这个静态库链接到我们的可执行程序中。链接需要使用gcc -L来指定库文件所在的目录,-l来指定库文件的名称。

make一下,然后运行,

完美,现在已经不需要tool1.c和tool2.c也行了,我们只需要.a库文件就可以了。

标签: #ubuntu生成共享链接库