Linux环境下配置动态链接库
来源:互联网 发布:查看80端口占用 编辑:程序博客网 时间:2024/06/05 10:18
有时候在Linux系统下安装软件后,尤其当软件不是安装在默认路径下时,软件运行可能会出现找不到库文件的错误,查看软件依赖库,方法如下:
[root@test soapsnp-v2.0]# ldd soapsnp
libz.so.1 => *** (0x00002afe959740000)
libncurses.so.5 => ...
如果依赖的库文件不存在的话,会提示not found,这时就需要对库文件进行一定的配置。
首先介绍下Linux下常用的目录结构:
/bin: 存放着一百多个Linux下常用的命令、工具
/dev: 存放着Linux下所有的设备文件
/home: 用户主目录,每建一个用户,就会在这里新建一个与用户同名的目录,给该用户一个自己的空间
/mnt: 外部设备的挂接点,通常用cdrom与floppy两个子目录,它的存在简化了光盘与软盘的使用
/proc: 这其实是一个假的目录,通过这里你可以访问到内存里的内容,内核提供的一个接口,主要用来存储系统统计信息
/lib: 静态链接库
/etc: 存放Linux大部分的配置文件
/usr: 通常用来安装各种软件的地方,/usr/include、/usr/lib及/usr/share 则是存放一些共享链接库
下面重点说下/etc/ld.so.conf:
这个文件记录了编译时使用的动态链接库的路径。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件。所以当安装程序的库文件不是安装在这两个目录下面时,就需要在ld.so.conf文件中配置一下搜索的路径,例如:你所需要的库文件放在/usr/local/lib下,添加该路径到ld.so.conf中:
[root@test etc]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
另一种配置方法,在文件夹/etc/ld.so.conf.d中新添加一个配置文件*.conf,将依赖库文件写到该配置文件中去也行,因为在ld.so.conf中已经包含了ld.so.conf.d中的所有配置文件了。
在配置完成之后,运行一下ldconfig。
ldconfig的作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache 以供使用。
再说说PKG_CONFIG_PATH变量:
有时安装程序后使用时会提示版本低,安装高版本的程序后仍然提示的是低版本,这时就需要设置PKG_CONFIG_PATH变量了。pkg-config就是向configure程序提供系统信息的程序,比如软件的版本啦,库的版本啦,库的路径啦,等等这些信息只是在编译其间使用。你可以 ls /usr/lib/pkgconfig 下,会看到许多的*.pc,用文本编辑器打开,会发现类似下面的信息:
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: GLib
Description: C Utility Library
Version: 2.4.7
Libs: -L${libdir} -lglib-2.0
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include
configure就是靠这些信息判断你的软件版本是否符合要求。解决的办法很简单,设定正确的PKG_CONFIG_PATH,假如将glib-2.x.x装到了/usr/local/下,那么glib-2.0.pc就会在
/usr/local/lib/pkgconfig下,将这个路径添加到PKG_CONFIG_PATH下就可以了。设定好后可以加入到~/.bashrc中,例如:
PKG_CONFIG_PATH=/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:/usr/X11R6/lib/pkgconfig
设置PKG_CONFIG_PATH变量的问题我自己还没碰到过,先记录在这里,以后碰到就不用再找了,呵呵。
- Linux环境下配置动态链接库
- Linux环境下加载动态链接库
- Linux环境下编写静态和动态链接库
- Linux环境下创建并使用动态链接库
- Linux下动态链接库
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Unix环境下编译动态链接库
- 编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
- 编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
- Linux环境下,在不停止程序的情况下,更换动态链接库
- 【ARM-Linux开发】Linux环境下使用eclipse开发C++动态链接库程序
- Linux下动态链接
- Linux环境下使用eclipse开发C++动态链接库程序
- Linux环境下使用eclipse开发C++动态链接库程序
- Linux环境下使用eclipse开发C++动态链接库程序
- Linux环境下使用Eclipse开发C++动态链接库程序
- linux setlocale用法
- javascript是大小写敏感的
- 使用独立的node windows二进制文件
- .NET组件程序设计 第8章 多线程和并发管理
- C基本知识
- Linux环境下配置动态链接库
- Javascript在页面加载时的执行顺序
- node.js简单示例
- 关注博客
- 浏览器加载显示html页面内容的顺序分析
- 源代码
- MIPS体系结构介绍
- VBS压缩图片代码,OWC10.ChartSpace
- 在windows 7下安装node.js