linux下的静态库和动态库生成

原创 2013年12月05日 20:50:00

静态库

       在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项:

          d -----从指定的静态库文件中删除文件

          m -----把文件移动到指定的静态库文件中

          p -----把静态库文件中指定的文件输出到标准输出

          q -----快速地把文件追加到静态库文件中

          r -----把文件插入到静态库文件中

          t -----显示静态库文件中文件的列表

          x -----从静态库文件中提取文件

      还有多个修饰符修改以上基本选项,详细请man ar 以下列出三个:

          a -----把新的目标文件(*.o)添加到静态库文件中现有文件之后

          b -----***************************************之前

          v -----使用详细模式

ar 命令的命令行格式如下:

      ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files...

参数archive定义库的名称, files是库文件中包含的目标文件的清单, 用空格分隔每个文件.

比如创建一个静态库文件的命令如下:

      ar -r libapue.a error.o errorlog.o lockreg.o

这样就了libapue.a静态库文件, 可以用 t 选项显示包含在库中的文件

      创建库文件之后,可以创建这个静态库文件的索引来帮助提高和库连接的其他程序的编译速度.使用ranlib程序创建库的索引,索引存放在库文件内部.

      ranlib libapue.a

用nm程序显示存档文件的索引,它可以显示目标文件的符号

nm libapue.a | more

如果是显示目标文件的符号:

nm error.o | more

如何使用呢?如下所示:

gcc -o test test.c libapue.a

这样就可以在test.c中调用在libapue.a中的函数了.

动态库

1.创建共享库

     gcc -shared -o libapue.so error.o errorlog.o

这样就创建了共享库!

2.编译共享库

    假设共享库位于当前目录(即跟程序文件相同的目录中)

gcc -o test -L. -lapue test.c

这样就编译出了不包含函数代码可执行文件了,但是但你运行时会发现linux动态加载器打不到libapue.so文件.

可以用ldd 命令查看可执行文件依赖什么共享库:

ldd test

如何才能让动态加载器发现库文件呢?有两种方法可以解决:

     LD_LIBRARY_PATH 环境变量  

     /etc/ld.so.conf文件

    1.环境变量

       export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:."

    2.修改/etc/ld.so.conf文件.位于/etc/ld.so.conf

一般应用程序的库文件不与系统库文件放在同一个目录下,一般把应用程序的共享库文件放在/usr/local/lib下,新建一个属于自己的目录apue,然后把刚才libapue.so复制过去就行了

同时在/etc/ld.so.conf中新增一行:

/usr/local/lib/apue

以后在编译程序时加上编译选项:

-L/usr/local/lib/apue -lapue

这样就可以使用这个libapue.so共享库了!!

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-01/31247.htm

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在Linux下如何使用GCC编译程序、简单生成静态库及动态库

在Linux下如何使用GCC编译程序、简单生成静态库及动态库。 分类: Linux 系统编程2010-07-06 15:37 1273人阅读 评论(0) 收藏 举报 在Linu...

在Linux下如何使用GCC编译程序、简单生成静态库及动态库。

在Linux下如何使用GCC编译程序、简单生成静态库及动态库。    本文适用于Linux下开发初学者。本文初步讲解在Linux下如何使用GCC编译程序、简单生成静态库及动态库。 一、关于...

Linux下用gcc生成静态库和动态库

Linux下用gcc生成静态库和动态库 (2010-11-01 16:08) 分类: Linux 一、基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库。 本...

Linux下Gcc生成和使用静态库和动态库详解(转)

一、基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于windows...

Linux下Gcc生成和使用静态库和动态库详解

转自:http://blog.chinaunix.net/uid-23592843-id-223539.html 一、基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)