一、配置可执行文件的依赖库
有些开源库软件官网是有可执行文件下载的,不过下载下来由于每个人不同的系统环境这个可执行文件都大多数不能直接用,可能是缺了一些库或者库明对不上,首先我们应该知道这个可执行文件缺了什么,例如我想查看需要这个可执行文件哪些共享库文件的支持,使用命令
$ ldd 可执行文件
如果缺少某些库,就会显示数缺少某些.so文件,然后接下来有两个步骤:
第一、利用系统的搜索功能,看能不能找到找到这个库,因为有时候是已经安装了,路径没有配置好而已,
关于这个路径配置有两种方法:
一种是将绝对路径写入 /etc/ld.so.conf, 然后再生效一下:
$ sudo vi /etc/ld.so.conf
$ sudo ldconfig
另外一种是直接在命令行中敲入:(不需要获取root权限,不过是暂时的,终端一关就配置没有了,不建议使用)
$ export LD_LIBRARY_PATH=/opt/openmcu/:$LD_LIBRARY_PATH
可以用echo $LD_LIBRARY_PATH查看。
具体场景也可以移步到我的另外一篇博客--编译、安装、使用openmcu,里面有根据场景具体说明情况。
第二、百度搜索你的系统版本如何安装这个库,如果是常见的大多数都有解决方案。接下来说一下比较偏的情况要怎么做吧:
使用
$ apt-file search XXXX.so
寻找在自己linux系统的该版本下所能找到的相关依赖库是什么和对应的依赖库名称(有些依赖库更新了,不一定能够下载到老的版本,这个时候你可能就会被卡住好几天直到百度找到相类似的命令给你,这很致命~)
后者还有 $ apt-cache search all | grep XXXX.so等命令也行,
然后用$ sudo apt-get install XXXX 下载到所对应需要下载的文件,再次用“ ldd 命令”查看所需要的依赖库是否已安装齐了。
如果你是下载了新版的依赖库(得是兼容老版本的依赖库,一般都是兼容的),可执行文件对应的是老版本的依赖库名字,名字对不上,没关系,创建一个符号链接来实现即可:
$ sudo ln -s 新的共享可执行文件(XXX.so) 老的共享可执行文件(XXX.so);
例如:
sudo ln -s /usr/lib/x86_64-linux-gnu/librabbitmq.so.4.1.3 /usr/lib/x86_64-linux-gnu/librabbitmq.so.1
对了,ldd这个命令,同样用来查看.so动态依赖库也是可以的,
$ ldd XXXX.so
二.源代码编译、安装
1.拿到源代码,解压
2.查看有没有configure文件,没有的话则可能会有个configure.sh脚本,执行则会生成configure文件,
3.刚拿到一个陌生的源代码,则建议先configure -h查看一下帮助页面,
常见有
--host=编译工具 ;
--enable-XXX;
--prefix=编译路径(不加则是转到系统默认路径下);
$ ./configure 这条命令这是检查(check)你的这个源代码的一些相关依赖能不能找到,并不会对齐编译,速度很快的
4.然后make && make install
遇到一些比较特殊的情况还可以借助一下make bothdepend和make bothnoshared这两条命令。
过程中遇到缺少某些库就“复制粘贴,百度见”,常见的都可以任意地找到方法,在安转一下依赖库之前先考虑一下能不能apt-get 或者 yum 安装,第二再去考虑用git去安装,最后不行才去选择下载源代码安装。
其他相关常用的命令:
$ sudo vi /etc/profile 和 $ source /etc/profile 永久写入环境变量,一般是写入一些$PATH 、$PTLIBDIR等
$ nm -D xxx.so :查看.so依赖库的函数,建议添加“ | grep + 函数名 ”进行筛选。
$ file XXX.so :查看 .so 文件的信息,用于怎样的环境下
$ which XXX :查看安装的可执行文件的位置 (例如 which sh)
$ locate XXX : 查看数据库中的包含该字眼的文件路径
$ diff XXX YYY : 比较两个文件