首页 > 其他 > 详细

关于静态库与动态库的建立

时间:2020-03-21 16:57:01      阅读:57      评论:0      收藏:0      [点我收藏+]

将我们的代码打包成库文件可以增加我们代码的安全性。那么静态库和动态库该如何建立呢?

今天我将老师所讲的内容整理了一下并进行了运用,将一些过程和体会写下来。

(1).没有库文件的处理技术分享图片

如上所示,是我没有建立库的编译与实现。首先建立一个Makefile文件,这样我们就可以直接使用make命令将我们的源文件编译成中间代码文件并把中间代码文件同可执行文件链接起来,也许在你的代码很少的情况下看不出其中的方便,但是一旦你的代码文件很多的时候,你就会对它的方便深有体会。

 

(2).静态库的建立

技术分享图片

技术分享图片

 

如上图,我们首先建立一个lib目录,我这里建立的是libSamp目录,然后利用命令“ar rcs liblhq.a test1.o",其中liblhq.a里的lib是库文件固定的前缀;.a是库文件的后缀;而lhq则是文件的名称,可自行命名;test1.o则是除了我们的测试文件对应的.o文件外的所有中间目标文件,我这里只有一个。

之后利用"cp test.c test.h liblhq.a libSamp"命令将我们的测试文件和头文件以及静态库复制到libSamp目录下。

紧接着进入我们创建的libSamp目录下,执行"gcc -o test test.c -stastic -L. -llhq"命令,使用静态库,创建库文件的接口文件头文件。其中gcc是编译器,而-o表示指定的目标文件,test是我的最终生成的文件,-stastic表示使用静态库,是一个固定的命令,-llhq里的第一个l是lib的意思,后面带的是库文件的名称。

之后我们ls可以看到生成了一个最终的文件,之后我们就可以运行了。

当我们进入到最终的文件时,里面就只看到一堆乱码。

技术分享图片

 

(3).动态库的创建

技术分享图片

 

动态库的建立和静态库有很多相似之处,首先我们创建一个目录,然后将我们的.o文件和头文件以及test.c源文件复制到我们建立的目录下,然后进入到目录,使用命令"gcc -shared -fPIC -o liblhq.so"命令来生成我们最终的动态库,再利用"gcc -o test test.c -L. -llhq"来生成我们的可执行文件,这里我们会发现,和静态库相比,我们的这条命令只少了"-static"。对的,没有"-stastic"就是动态库下生成可执行文件的命令。

可是当我们运行程序的时候会发现,这里会提示我们文件不存在,这是因为默认的动态库搜索路径是/usr/lib,我们可以直接利用命令"export LD_LIBRARY_PSTH=$(pwd)"来将该环境变量设置为当前目录。

之后再运用就不会有问题了。

关于静态库与动态库的建立

原文:https://www.cnblogs.com/paperqing/p/12539842.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!