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

关于Linux动态库的加载路径

2015-12-11 19:36 435 查看

问题

按如下步骤在Ubuntu上编译安装Google Protocol Buffers

$ ./configure
$ make
$ make check
$ sudo make install


运行

$ protoc --version


出现找不到动态库的错误

protoc: error while loading shared libraries: libprotobuf.so.7: cannot open shared object file: No such file or directory


原因

protobuf的默认安装位置是 /usr/local,/usr/local/lib 不在Ubuntu系统默认的 LD_LIBRARY_PATH 里。这个问题 protobuf 的README.txt 写得很清楚,怪自己不仔细。


** Hint on install location **

By default, the package will be installed to /usr/local. However,
on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH.
You can add it, but it may be easier to just install to /usr
instead. To do this, invoke configure as follows:

./configure --prefix=/usr

If you already built the package with a different prefix, make sure
to run "make clean" before building again.


解决

参考文章里面提供了几种方法,这里只使用其中的一种。

方法1:
1. 创建文件 /etc/ld.so.conf.d/libprotobuf.conf 包含内容

/usr/local/lib


2. 运行命令

$ sudo ldconfig


这时再运行 protoc --version 就可以得到版本号了

$ protoc --version
libprotoc 2.4.1


方法2:

vim /etc/profile

export LD_LIBRARY_PATH=~/protobuf-2.5.0

source /etc/profile

$ sudo ldconfig

(LD_LIBRARY_PATH的这里,填写的是protobuf文件的位置)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: