您的位置:首页 > 运维架构 > Linux

linux产生静态库和动态库

2015-01-09 14:44 85 查看
如何构建一个库

静态库(.a)

静态库的建立和使用是非常简单的:

1. 编译源文件:gcc -Wall -c test1.c test2.c

2. 生成库文件:ar -cvq libtest.a

3. 链接库文件:gcc -o exename source.c libtest.a 或者

gcc -o exename source.c -L/path/to/lib-directory -ltest

动态库(.so)

动态库的建立步骤、链接方法和静态库基本一致,如下:

gcc -Wall -fPIC -c *.c

gcc -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0 *.o

mv libctest.so.1.0 /opt/lib

ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so.1

ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so

链接命令:gcc -Wall -I/path/to/include-files -L/path/to/libraries prog.c -lctest -o prog

注:这里的libname.so.x.x是版本化库,x代表版本号。另外,作为插件形式使用的共享不做介绍。

库文件的路径:

在程序运行期间,为了使库文件能够被程序链接到并使用,用户必须配置系统环境,以使得这些库文件能够被搜索到。可以使用以下任何一种方法:

1、把库文件添加到/etc/ld.so.conf中:

/usr/X11R6/lib

/usr/lib

/usr/lib/sane

/usr/lib/mysql

/opt/lib

添加之后需要以root权限执行ldconfig命令,以使ld.so可以搜索到。

2、添加特定路径到库缓存中:(root权限)

ldconfig -n /opt/lib </opt/lib中有libctest.so>

这种方式的系统配置在系统重启后不会再起作用。

3、配置环境变量LD_LIBRARY_PATH:

命令:export LD_LIBRARY_PATH=/lib/directory:$LD_LIBRARY_PATH



库文件路径的配置,就是为了是库文件加载器ld.so在运行时能够找到共享库文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: