遇到的问题,记录一下。
在centos下编译动态库,测试的时候始终通不过,一直报错,在网上查资料,想起来编译链接动态库时需要设置查询动态库的路径,我设置的是LD_LIBRARY_PATH,命令为
export LD_LIBRARY_PATH=$(BIN_DIR):$LD_LIBRARY_PATH
//$(BIN_DIR) 替换成你想设置的那个路径
这个export是临时设置的,重启终端后就不存在了。
网上搜寻到一篇博客,讲设置环境变量的方法的,我借鉴过来。
Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH
PATH: 可执行程序的查找路径
查看当前环境变量:
echo $PATH
设置:
方法一:export PATH=PATH:/XXX 但是退出当前终端后就失效
方法二:修改 ~/.bashrc 或 ~/.bash_profile或系统级别的/etc/profile
1. 在其中添加例如export PATH=/opt/ActivePython/bin:$PATH
2. source .bashrc (Source命令也称为“点命令”,也就是一个点符号(.)。
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)
LD_LIBRARY_PATH: 动态库的查找路径
设置:
方法一: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是退出当前终端后就失效
方法二: 修改~/.bashrc或~/.bash_profile或系统级别的/etc/profile
1. 在其中添加例如export LD_LIBRARY_PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH
2. source .bashrc (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)
方法三:这个没有修改LD_LIBRARY_PATH但是效果是一样的实现动态库的查找,
1. /etc/ld.so.conf下面加一行/usr/local/mysql/lib
2. 保存后执行 ldconfig 生效
(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.)
方法三设置稍微麻烦,好处是比较不受用户的限制。
ld.so.conf 里面配置之后,添加的路径为最优先路径;
[root@host ~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/fan/lib
/usr/local/fan/lib64
一定一定要记住,链接动态库(也就是共享库)要设置环境变量。