上海龙凤419

操纵体系

在Linux平台上接静态库和同享库的使体例

时候:2024-09-10 11:24:22 操纵体系 我要投稿
  • 相干保举

对在Linux平台上接静态库和同享库的使体例

  1、Linux函数库先容

  函数库能够看作是事前编写的函数调集,它能够与主函数分手,从而增添法式开辟的复用性。Linux中函数库能够有3种利用的情势:静态、同享和静态。

  1)静态库的代码在编译时就已毗连到开辟职员开辟的利用法式中;

  2)而同享库只是在法式起头运转时才载入;

  3)静态库也是在法式运转时载入,但与同享库差别的是,静态库利用的库函数不是在法式运转使起头载入,而是在法式中的语句须要利用该函数时才载入。静态库能够在法式运转时代开释静态库所占用的内存,腾出空间供其余法式利用。

  注:

  l因为同享库和静态库并不在法式中包罗库函数的内容,只是包罗了对库函数的援用,是以代码的范围比拟小。

  l体系中可用的库多数寄存在/usr/local/lib、/usr/lib、/lib、目次中。

  l头文件多数放在/usr/include、/usr/local/include目次下。

  l同享库的相干设置装备摆设文件和办理号令以下:

  /etc/ld.so.conf:包罗同享库的搜刮地位。

  ldconfig:同享库办理东西,普通在更新了同享库以后要运转该号令。

  ldd:能够检查可履行文件所利用的同享库。

  l库文件名由前缀lib和库名和后缀构成,按照库的范例差别,后缀名也不一样。

  2、大批利用库文件的首要缘由

  1)为了便于编程,对局部常常利用的函数,响应的开辟说话都供给了对应的库文件撑持。

  2)埋没详细的函数完成细节。法式员在利用库文件时,只须要包罗所须要函数地点的头文件,而不必关怀该函数的详细完成。对贸易软件来讲,其常识产权也取得了一定的掩护。

  3、利用这些库函数都有甚么路子

  在任何编程情况中,库文件都是一些事后编译好的函数调集,这些函数以二进制代码情势存储在库文件中。用户要利用这些函数,只须要包罗这些库文件便可。普通来讲,要从库文件取得响应的函数有两种体例。

  1)在编译时将库中响应函数的二进制映像代码直接拷贝到以后编译的法式中,以后法式是自力运转的。这类库咱们叫做静态库,在Linux中,以.a为后缀的为静态库。

  2)在编译时只援用库中响应函数的二进制映像代码的进口地点(不直接拷贝),该法式在运转时从同享库文件中读出该函数代码(这须要起首将同享库加载到内存中),从而直接援用,这类库咱们称之为同享库,在Linux中,以libxxx.xo.x.x为格局定名。

  4、详细若何利用

  利用静态库、同享库和静态库三种范例的体例很近似,都是利用选项是“-l”(注重这里是小写的“L”)。该选项是用于指明详细利用的库文件。因为在Linux中函数库的定名法则都是以“lib”开首的,是以,这里的库文件只要填写lib以后的内容便可。如:有静态库文件libm.a,在挪用时只要写作“-lm”;一样对静态库文件libm.so;在挪用时也只要写作“-lm”便可,其全体挪用号令近似以下:

  [root@localhost gcc]# gcc -o dynamic –L /root/lq/testc/lib/ dynamic.o -lmydynamic

  那末,若体系中同时存在文件名不异的静态库文件和静态库文件时,该链接选项事实会挪用静态库文件仍是静态库文件呢?经测试后能够发明,体系挪用的是静态库文件,这是因为Linux体系中默许的是接纳静态链接的体例。如许,若用户要挪用含有同名静态库文件的静态库文件,则在“-l”后须要显现地写出包罗后缀名的文件名,如:要挪用libm.a库文件时就需写作“-llibm.a”。

  1)若是你已有一个静态库文件libhello.a,此库文件的头文件为libhello.h,其内容以下:

  #ifndef __libhello_H__

  #define __libhello_H__

  void print_hello(void); //print hello world,this is library to console

  #endif __libhello_H__

  咱们能够从下面的代码看出,头文件晓得libhello.a库文件包罗了print_hello()函数,其前往值范例和参数都为空。是以,在编写法式时,你只须要利用此函数(在包罗头文件的条件下),而不必去管其详细完成细节。

【在Linux平台上接静态库和同享库的使体例】相干文章:

若何建立Linux静态库和静态库03-01

Linux主动备份MySQL数据库的适用体例03-20

Linux体系下静态库的天生先容03-04

科目二倒库移库技能03-19

Linux装置和利用Glances的体例先容03-05

php备份数据库类的体例12-02

PHP伪静态的体例12-02

Linux的备份体例03-09

Linux格局化硬盘的体例和步骤12-04