Bowen's Blog

Respect My Authorita.

Change System Library Path

| Comments

找不到共享文件是我们在native build的时候经常遇到的问题,有一种情况是操作系统上确实没有该共享文件,还有一种是含有该共享文件的目录没有被加入到library 查询的路径中。

假设现在我们需要把 /opt/lib/lib.test.so 加入到library path中. 在不想影响到系统配置的情况下,我们可以修改环境变量:

1
export LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH

easy right? 如果你确信你是想一劳永逸的把/opt/lib/加入到library path中,那么可以直接修改ldconfig的配置:

1
2
[vagrant@localhost ~]$ sudo ldconfig | grep opt
[vagrant@localhost ~]$

目前尚未出现/opt/。 怎么办呢?直接去修改/etc/ld.so.conf.d/ 下的配置文件。

1
2
3
4
5
6
7
8
9
[vagrant@localhost ~]$ ls -al /etc/ld.so.conf.d/
total 16
drwxr-xr-x.  2 root root 4096 Mar  9  2013 .
drwxr-xr-x. 65 root root 4096 Nov 18 10:04 ..
-r--r--r--.  1 root root  324 Feb 22  2013 kernel-2.6.32-358.el6.x86_64.conf
-rw-r--r--.  1 root root   17 Dec  7  2012 mysql-x86_64.conf

[vagrant@localhost ~]$ less /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql

看上去规则很简单,第一步为app添加配置文件,第二步在文件中写入library的路径。

1
sudo echo “/opt/lib” > /etc/ld.so.conf.d/opt.conf

make it happen

1
2
3
4
5
[vagrant@localhost ld.so.conf.d]$ sudo ldconfig

[vagrant@localhost ld.so.conf.d]$ ldconfig -v | grep opt
/opt/lib:
ldconfig: File /opt/lib/lib.test.so is empty, not checked.    #测试文件

So, are you happy now?