Linux(centos5.5)gcc4.6.3 boost1.53.0 cmake2.8.4 安装

6310阅读 0评论2013-04-27 jueduiyingxiong
分类:LINUX

 

Linuxcentos5.5)部分安装说明 (不过这个版本,个人查了没有std=c++0x和std=gnu++0x 选项(在安装unodered_map和unodered_set的时候需要),后续重安装 4.7.2的看看)

说明:安装主要包括,gcc4.6.3cmake2.8.4boost1.53.0

Gcc安装

需要包: gmp-4.3.2.tar.gz, mpfr-2.4.2.tar.bz2, mpc-1.0.1.tar.gzgcc-4.6.3.tar.bz2

错误一

编译gcc

#tar -xvf gcc-4.6.3.tar.bz2

#cd gcc-4.6.3

#./configure

出错:

gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+

说明要安装gcc需要GMPMPFRMPC这三个库,于是又从网上下了三个库的压缩包。由于MPFR依赖GMP,而MPC依赖GMPMPFR,所以要先安装GMP,其次MPFR,最后才是MPC

安装GMP

解压 #tar -xvf gmp-4.3.2.tar.bz2

#cd gmp-4.3.2

#./configure --prefix=/usr/local/gmp

#make

#make install

这样就安装好了gmp.mpfrmpc的安装方法与此类似。不过要注意配置的时候要把依赖关系选项加进去,具体后面两个库配置命令如下:

安装MPFR

解压 #tar -xvf mpfr-2.4.2.tar.bz2

#cd  mpfr-2.4.2

#./configure  --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp

#make

#make install

安装MPC

解压 #tar -xvf mpc-1.0.1.tar.gz

#cd  mpc-1.0.1

#./configure --prefix=/usr/local/mpc ---with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr

#make

#make install

安装好这三个库之后,就可以正式开始安装gcc了。

错误二

#cd gcc-4.6.3

#./configure --prefix=/usr/local/gcc -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ -with-gmp=/usr/local/gmp -with-mpfr=/usr/local/mpfr -with-mpc=/usr/local/mpc

#make

gcc的配置选项有很多,具体可以参考gcc源文件目录下的安装说明。这里只安装了cc++的编译器。然后开始make编译。本来以为就可以大功告成了,结果在编译途中又出现了错误:

checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile

See `config.log' for more details.

解决办法:

需要添加环境变量LD_LIBRARY_PATH以指出前面三个库的位置,键入以下命令:

#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib/:/usr/local/gmp/lib/:/usr/local/mpfr/lib/ 

//这里我手动export 才行

安装gcc

#make

#make check

#make install

至此gcc就全部安装完成了。

创建软链接

不过目前还不能使用新版本的gcc,因为新版的可执行文件还没加到命令的搜索路径中。在这里我为新版的gccg++命令分别建立了一个软链接。进入/usr/bin目录后,键入如下命令建立软链接。

# ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc

# ln -s /usr/local/gcc/bin/g++ /usr/bin/g++

配置新软件的环境变量

在正式使用之前还有最后一个工作要做,就是将前面安装的三个库的路径加进环境变量LD_LIBRARY_PATH中,不然在编译程序的时候会出错。

需要编辑/etc目录下的.bashrc文件配置shell环境。

添加以下语句:

#vi /etc/.bashrc

添加到最后一行

LD_LIBRARY_PATH=:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/gcc/lib

export LD_LIBRARY_PATH

保存重启系统后,就可以使用新装的gcc了,然后用

#gcc  -v       查看版本,gcc 版本 4.6.3 (GCC)

g++查看同上,gcc4.6.3安装成功

注意,这里可能需要执行“cmake安装”步骤中的“错误一”。

部分安装参考


1
、下载安装的源码:

如下需要下载以下包:gcc-4.6.1.tar.bz2 gmp-4.3.2.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2
下载地址如下:
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/{gmp-4.3.2.tar.bz2,mpc-0.8.1.tar.gz,mpfr-2.4.2.tar.bz2}
wget
即可!

2、解压安装:安装有先后顺序:GMPMPFRMPCGCC

安装GMP: tar jxf gmp-4.3.2.tar.bz2 &&cd gmp-4.3.2/ ;./configure –prefix=/usr/local/gmp/ &&make &&make install

安装MPFR:

cd ../ ;tar jxf mpfr-2.4.2.tar.bz2 ;cd mpfr-2.4.2/ ;./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install

安装MPC:

cd ../ ;tar xzf mpc-0.8.1.tar.gz ;cd mpc-0.8.1 ;./configure –prefix=/usr/local/mpc –with-mpfr=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install

安装GCC

cd ../ ;tar jxf gcc-4.6.1.tar.bz2 ;cd gcc-4.6.1 ;./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/ &&make &&make install

然后执行如下:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/

//这一步很关键,设置变量,不设置后面会报错。

make && make install

安装完毕即可!然后做一个链接就可以使用GCC

mkdir -p /data/backup/`date +%Y%m%d`

mv /usr/bin/{gcc,g++} /data/backup/`date +%Y%m%d`

新建软链接:

ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc

ln -s /usr/local/gcc/bin/g++ /usr/bin/g++

cmake安装

需要库:cmake-2.8.4.tar.gz

也可以参考:wget

错误一

#tar xvf cmake-2.8.8.tar.gz

#./bootstrap
#make
#make install

错误:./a.out: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./a.out)
shaochangqing@shaocq-notebook:~/study$ strings /usr/lib/libstdc++.so.6 | grep GLIBC

解决办法:

查看版本strings /usr/lib/libstdc++.so.6 | grep GLIBC 没有找到对应文件

解决问题:

一、将/usr/local/gcc-4.7/lib64中的libstdc++.so.6.0.17拷贝到/usr/lib

#cp  /usr/local/gcc/lib64/libstdc++.so.6.0.16 /usr/lib/


二、并建立链接:


#ln -sf /usr/lib/libstdc++.so.6.0.17  /usr/lib/libstdc++.so.6

检查:
strings /usr/lib/libstdc++.so.6 | grep GLIBC

安装cmake

#make
#make install

Boost 安装

需要库:bzip2-1.0.6.tar.gzicu4c-4_6_1-src.tgzPython-3.2.3.tar.bz2zlib-1.2.7.tar.gzboost_1_53_0.tar.bz2

安装python

参考下载源代码

# tar xvf Python-3.2.3.tar.bz2

#cd Python-3.2.3
# ./configure
#make
# make install

错误一

suse10rhel5es5)下系统默认已经装了python但版本是2.4.x;本次安装后在shell中输入

#python

会发现显示结果:


  Python 2.4.3 (#1, Dec 11 2006, 11:38:52)

  [GCC 4.1.1 20061130 (Red Hat 4.1.1-43)] on linux2

  Type “help”, “copyright”, “credits” or “license” for more information.

  >>>

  版本还是2.4.x

解决办法:
#cd /usr/bin
#ll |grep python   //
查看该目录下python
#rm -rf python
#ln -s PREFIX/Python-3.2.3/python ./python  //PREFIX
为你解压python的目录
#python //
再次检查,正确了

说明python安装成功。按ctrl+d键可退出python命令行

注意这里需要执行“安装bzlib”的“错误三”步骤,否则其他安装不通过

安装zlib

参考网址:wget

# tar xvf zlib-1.2.7.tar.gz

#cd zlib-1.2.7
# ./configure
#make
# make install

安装bzlib

参考网址:wget

#tar xvf bzip2-1.0.6.tar.gz

#cd bzip2-1.0.6

//错误安装(以下先不要这样,否则重新解压)
#make
#make install

错误二

安装boost 会出现错误:

错误:缺少zlib.h这个文件
//******************************************************************************************************************************//
/usr/bin/ld: /usr/local/lib/libbz2.a(bzlib.o): relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libbz2.a: could not read symbols: Bad value
collect2: ld
返回 1
make: *** [libtokyocabinet.so.8.22.0]
错误 1

解决办法:

安装前(重新解压)

#tar xvf bzip2-1.0.6.tar.gz

#cd bzip2-1.0.6

1、删除以前库

如果发现 libbz2.a: could not read symbols: Bad value
就应该把/usr/local/lib中的libbz2.a删掉

#rm –rf /usr/local/lib/libbz2.a

2.
修改bzip2-1.0.4Makefile文件

#vim Makefile

CC=gcc -fPIC

AR=ar
RANLIB=ranlib
LDFLAGS=

BIGFILES=-D_FILE_OFFSET_BITS=64
CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES)

//从这里开始
同样,bzip2有一个Makefile-libbz2_so的文件,编译时会调用,当然你也可以单个编译:


#make -f Makefile-libbz2_so

#make clean

#make

#make install

安装icu

#tar xvf icu4c-4_6_1-src.tgz
#cd icu/soruce
#./configure
#make
#make install

安装boost

 ./booststarp.sh   //这里的一些错误不用管

./b2 –a //全部安装(开始一堆错误,看各个的错误就知道了)

./b2 install

错误三

找不到“python.h”文件。

解决办法:

查看./b2 –a 打应出的python目录,明显找不到路径;而在/usr/local/include/python3.2m路径下有“python.h”头文件。这样,我把它复制以下就行了。


#cp -rp /usr/local/include/python3.2m/ /usr/local/include/python3.2

其实这里还有N多错误,但如果上面的“错误N”步骤都解决了,那么下面就没有问题了

./b2 –a //全部安装

./b2 install

Boost环境

设置环境变量
/etc/profile.d新建可执行文件boost.sh,添加文件内容:

#vim /etc/profile.d

#!/bin/sh

BOOST_INCLUDE=/usr/local/include/boost

BOOST_LIB==/usr/local/lib

export BOOST_INCLUDE BOOST_LIB


命令行执行:

#source /etc/profile.d/boost.sh


以后在编译程序时,

只需要用:-I$BOOST_INCLUDE -L$BOOST_LIB 即可,还要使用-l指定了链接库。

余下环境:(下面可能不用搞,默认会指定路径)

/etc/ld.so.conf  // 文件添加so库的环境变量/home/boost-1.48.0/sdk/lib(主要关键问题)

#vi /etc/ld.so.conf

最后一行添加

/usr/local/lib

修改完成后,通过ldconfig命令进行重启

#ldconfig

                                作者:向容成

                                         2013-04-02

上一篇:MySQL++调用存储过程
下一篇:nginx 定时器单线程例子