目录
linux编译安装软件会遇到依赖各种库,离线的情况下处理难度非常棘手,下面这个方法是比较好的方法总结:
离线安装软件
原理:
操作系统镜像包含了各种各样的库文件,也就是我们安装软件时所依赖的,但是我们PC上安装的linux操作系统只是安装了默认的和我们选择的软件所依赖的库,其他的并没有安装。也就是依赖库虽然不存在于操作系统上,但是大多数在镜像中是存在的。
实例
以下是linux 上编译安装软件的方法,既当安装软件出现缺少某些库的时候,就到操作系统镜像下的Packages文件找对应的库安装(网站找的会有各种问题:版本不同,系统不同等)
到网站 http://archive.kernel.org/centos-vault/6.5/os/i386/Packages/ 下载gcc-4.4.7-4.el6.i686.rpm
rpm -Uvh gcc-4.4.7-4.el6.i686.rpm
提示安装失败,依赖
error: Failed dependencies:
cpp = 4.4.7-4.el6 is needed by gcc-4.4.7-4.el6.i686
在http://archive.kernel.org/centos-vault/6.5/os/i386/Packages/ 目录下搜索cpp 找到cpp-4.4.7-4.el6.i686.rpm
下载,rpm -Uvh cpp-4.4.7-4.el6.i686.rpm 然后 安装gcc-4.4.7-4.el6.i686.rpm
遇到这样的报错:
error: Failed dependencies:
libmpfr.so.1 is needed by cpp-4.4.7-4.el6.i686
因为linux的库前面会有个前缀lib,所以去搜索的时候要去掉lib 直接搜mpfr 就能搜到对应的rpm
也有例外的,如
libppl.so.7 is needed by cloog-ppl-0.15.7-1.2.el6.i686
libppl_c.so.2 is needed by cloog-ppl-0.15.7-1.2.el6.i686
虽然报了两个依赖,实际只需下载ppl的包(ppl-0.10.2-11.el6.i686.rpm)即可
注意
该离线方法的要点是,通过命令:
cat /etc/issue 显示的是发行版本信息
或
lsb_release -a 显示的是发行版本信息
查出linux的发行版本6.5,然后到http://archive.kernel.org/centos-vault网站,根据自己的系统选择目录,找到/os/i386/Packages/ 下的gcc rpm 下载下来,安装。 (32位是选择i386 64选择目录x86_64)
Redis need tcl 8.5 or newer
https://blog.csdn.net/luyee2010/article/details/18766911
hadoop@stormspark:~/workspace/redis2.6.13/src$ make test
You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
sudo ./configure
sudo make
sudo make install
################################
安装Redis 2.8.18时报错:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1