关于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/profileexport LD_LIBRARY_PATH=~/protobuf-2.5.0
source /etc/profile
$ sudo ldconfig
(LD_LIBRARY_PATH的这里,填写的是protobuf文件的位置)
相关文章推荐
- centos7.0下安装sqlite3
- linux下mysql的远程连接
- Linux C编程学习--main()函数简析
- Linux下安装 gnuplot
- ECS Linux开启/关闭swap(虚拟内存)
- 通过nat模式实现虚拟机下linux与电脑主机的互通
- linux1.0内核编译为elf文件格式,导致无法运行
- linux显示当期登陆用户信息“w”命令
- linux 服务器常规巡检并生成报表(一)
- Linux C编程---指针数组简析(二维数组、多级指针)
- CentOS学习笔记<rz/sz安装>
- [转载] Linux内存管理之mmap详解
- Linux批量清理多个文件内容而不删除文件
- linux守护进程程序设计
- CentOS安装Samba文件服务器
- Linux如何实现开机启动程序详解
- Linux网卡高级命令、IP别名及多网卡绑定
- Linux中ping命令的用法
- linux 常用快捷键
- linux下硬盘读写速度测试