linux静态链接库和动态链接库简单使用

来源:Linux认证    发布时间:2012-11-10    Linux认证视频    评论

  如果你编写过线程或者与POSIX通信方式相关的程序的时候,你可能在编译链接的时候出现编译错误的情况,这个时候你会在gcc后面加一个参数,-lpthread(对于线程相关的程序而言),其实这个就是一个静态链接库libpthread.a.链接库有两种:静态链接库和动态链接库。动态链接库的后缀名一般为。so,静态链接库的后缀名一般为。a.静态链接库:对于静态的链接库,程序在链接的时候,会找出程序中出现的相关函数,并且把它拷贝到可执行文件中,由于这种拷贝是完全的,所以这种程序一旦链接成功,相应的静态库也就不需要了。

  动态链接库:对于动态链接库来说,程序的可执行文件当中会留有一个它的标记,当程序运行到相应的标记的时候,就会调用相应的动态库。由于动态库节省空间,所以一般linux下面链接程序的时候都是默认的按照动态方式链接的。

  下面是两个简单的例子,说明了在linux下面如何进行使用静态链接和动态链接。

  静态库的简单使用:(1)编写被调用的函数文件sum.c和sum.h /*sum.c*/

  int sum(int a, int b)

  { return a+b;} /*sum.h*/ int sum(int a, int b);(2)生成静态链接库gcc -c sum.c ar -rc libsum.a sum.o //静态链接库的命名方式一般为:lib+链接库文件名+.a解释:其中ar命令是生成、更新静态库的一个命令。

  (3)写测试程序并进行测试#include

  int main()

  { printf("%d/n", sum(8, 7));return 0;}编译链接并且执行^_^[sunny@sunny-laptop ~/DS/lib]81$ gcc testsum.c -I /home/sunny/DS/lib libsum.a -o testsum ^_^[sunny@sunny-laptop ~/DS/lib]82$ ./testsum 15 ^_^[sunny@sunny-laptop ~/DS/lib]83$解释:其中的-I(大i)参数是指定静态链接库所在的目录,同时也可以使用-L进行相应的指定。

  动态库的简单使用:(1)同上的(1)。

  (2)生成动态链接库gcc -fPIC -o libsum.o -c sum.c gcc -shared -o libsum.so libsum.o或者我们可以把这两条命令写成一条命令gcc -fPIC -shared -o libsum.so sum.c(3)写测试程序并进行测试测试程序同上。

  测试过程:^_^[sunny@sunny-laptop ~/DS/lib]116$ gcc testsum.c -o testsum ./libsum.so ^_^[sunny@sunny-laptop ~/DS/lib]117$ ./testsum 15 ^_^[sunny@sunny-laptop ~/DS/lib]118$

  考试大温馨提示:本内容来源于网络,仅代表作者个人观点,与本站立场无关,仅供您学习交流使用。其中可能有部分文章经过多次转载而造成文章内容缺失、错误或文章作者不详等问题,请您谅解。如有侵犯您的权利,请联系我们,本站会立即予以处理。

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答