关于Linux动态库的加载路径
2024-08-26 03:04:30
问题
按如下步骤在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文件的位置)
最新文章
- Java_动态编译总结
- guava函数式编程
- POJ2570 Fiber Network(Floyd)
- 启用域中对象的";防止意外删除";功能
- linux基础命令学习(三)Vim使用
- [转载] codeblocks快捷键
- 【转】Mysql进程管理
- 【谷歌市场安装】Google Play 闪退问题解决
- Android基本控件之RadioGroup
- mysql服务器辅助选项
- Android What is Application
- input type file onchange上传文件的过程中,遇到同一个文件二次上传无效的问题。
- 用reg文件把便携版sublime text 3添加到右键菜单
- C语言,char类型变量不应与EOF直接比较
- 新浪云SAE 关于部分函数不能使用的做法
- python多进程那点事儿【multiprocessing库】
- MDX Cookbook 11 - 计算 Year Over Year 增长 (同比计算) ParallelPeriod
- python连接redis
- SpringBoot的文件上传
- iOS8 UICollectionView横向滑动demo
热门文章
- 打通Fedora19的vsftpd服务
- Centos6.6系统root用户密码恢复案例(转)
- window中findstr命令的用法
- Tomcat启动时选择加载项目
- Ubuntu 下iscsi initiator的安装与使用
- python之函数用法__getitem__()
- HTTP所承载的货物(图像、文本、软件等)要满足的条件
- eval、exec、execfile
- 使用loadrunner对https协议(单双向SSL)的web端性能测试 (转)
- linux 服务器删除大文件之后不释放存储空间的解决办法