不会的要多查多问,不然不会的永远不会,哪怕你离会就差了那么一点点
gcc-4.4.7升级至gcc-5.3.0 后编译安装node-v4.5.0
[ 2016/09/02 15:19 | by 刘新修 ]
yum -y install gcc gcc-c++
因centOS6.6/+ 最高版本的gcc也只到4.4.7版本,只好手动升级一下了。
.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2
下载gcc-4.8.2源码:
wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.1/gcc-4.9.1.tar.gz
tar jxvf gcc-4.8.2.tar.bz2
执行自动下载依赖(gmp-4.3.2、mpfr-2.4.2、mpc-0.8.1)
/home/installSoft/gcc-4.8.2/contrib/download_prerequisites
或者自己下载也行(根据gcc-4.8自动匹配好的版本收集比较兼容):
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
=====================================================================================
第一部分安装gcc的依赖库
=====================================================================================
gcc 编译需要三个额外库gmp、mpfr、mpc,下载并按照下面的顺序安装它们,如下:
wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.gz
wget ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz
wget http://www.multiprecision.org/mpc/download/mpc-1.0.tar.gz
tar -zxvf gmp-5.1.3.tar.gz
cd gmp-5.1.3
./configure --prefix=/usr/local/gmp-5.1.3
make && make install
cd ..
tar -zxvf mpfr-3.1.2.tar.gz
cd mpfr-3.1.2
./configure --prefix=/usr/local/mpfr-3.1.2 --with-gmp=/usr/local/gmp-5.1.3
make && make install
cd ..
tar -zxvf mpc-1.0.tar.gz
cd mpc-1.0
./configure --prefix=/usr/local/mpc-1.0 --with-gmp=/usr/local/gmp-5.1.3 --with-mpfr=/usr/local/mpfr-3.1.2
make && make install
cd ..
=====================================================================================
第二部分安装gcc
=====================================================================================
wget http://ftp.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.gz
cd gcc-build-5.3.0
../configure --prefix=/usr/local/gcc -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.1.3 --with-mpfr=/usr/local/mpfr-3.1.2 --with-mpc=/usr/local/mpc-1.0
make
make install
执行以下看看装好没有:
/usr/local/gcc/bin/gcc -v
gcc version 4.8.2 (GCC)
卸载旧版本
yum remove -y gcc gcc-c++
updatedb
链接新版本
cd /usr/bin
ln -s /usr/local/gcc/bin/gcc gcc
ln -s /usr/local/gcc/bin/g++ g++
检查版本
gcc -v
g++ -v
=====================================================================================
第三部分安装nodeJs
=====================================================================================
1、NodeJS下载
https://nodejs.org/en/download/
[root@test1 packages]# wget https://nodejs.org/dist/v4.5.0/node-v4.5.0.tar.gz
2、解压安装
tar -zxvf node-v4.5.0.tar.gz
cd node-v4.5.0
./configure --prefix=/usr/local/nodejs
make
make install
=============================================
如果configure默认安装路径node复制到bin下:
cp /usr/local/bin/node /usr/sbin/
如果configure指定安装路径node复制到bin下:
/usr/local/nodejs/bin/node -v
cp /usr/local/nodejs/bin/node /usr/sbin/
==============================================
安装nodeJS时候报:CC: command not found 是因为gcc升级后,同时也删除了cc标签链接至gcc的命令,cc是unix下的产物,linux下的cc就是gcc
链接cc至gcc[库]一般放在/usr/bin
ln -s /usr/bin/gcc /usr/bin/cc
[系统短命令]一般放在/usr/sbin
cp /usr/local/nodejs/bin/node /usr/sbin/
安装完成,查看node版本号:
[root@Hongkong node-v4.5.0]# node -v
v4.5.0
[root@Hongkong node-v4.5.0]#
=====================================================================================
依次编译安装下载的依赖包(好像已经自动解压了):
cd /home/installSoft/gcc-4.8.2/contrib/gmp
mkdir build
cd build
../configure
sudo make
sudo make install
cd /home/installSoft/gcc-4.8.2/contrib/mpfr
mkdir build
cd build
../configure --prefix=/usr/local/gcc/mpfr-2.4.2 --with-gmp=/usr/local/gcc/gmp-4.3.2
sudo make
sudo make install
cd /home/installSoft/gcc-4.8.2/contrib/mpc
mkdir build
cd build
../configure --prefix=/usr/local/gcc/mpc-0.8.1 --with-mpfr=/usr/local/gcc/mpfr-2.4.2 --with-gmp=/usr/local/gcc/gmp-4.3.2
sudo make
sudo make install
删除原先的目录:
rm -rf /usr/local/gcc
编译安装gcc4.8.2
cd /home/installSoft/gcc-4.8.2/
mkdir build
../configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gcc/gmp-4.3.2 --with-mpfr=/usr/local/gcc/mpfr-2.4.2 --with-mpc=/usr/local/gcc/mpc-0.8.1
sudo make
sudo make install
../configure --prefix=/usr/local/gcc --enable-checking=release --enable-languages=c,c++ --disable-multilib
如果make出现configure: error: cannot compute suffix of object files: cannot compile
原来如此,接下来把mpc ,gmp,mpfr 的lib文件夹果断加入到 LD_LIBRARY_PATH 变量
注意此处的三个lib,根据你所安装的路径来设置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc/mpc-0.8.1/lib:/usr/local/gcc/gmp-4.3.2/lib:/usr/local/gcc/mpfr-2.4.2/lib
/home/installSoft/node-v4.5.0/out/Release/mksnapshot: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/installSoft/node-v4.5.0/out/Release/mksnapshot)
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
查看 GLIBCXX 版本:
[root@Hongkong node-v4.5.0]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
[root@Hongkong node-v4.5.0]#
这里并没有查看到: GLIBCXX_3.4.15
执行以下命令,查找编译 gcc 时生成的最新动态库:
find / -name "libstdc++.so.6"
[root@Hongkong node-v4.5.0]# find / -name "libstdc++.so.6"
/home/installSoft/gcc-4.8.2/build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/installSoft/gcc-4.8.2/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/installSoft/gcc-4.8.2/build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/lib64/libstdc++.so.6
/usr/local/gcc/lib64/libstdc++.so.6
[root@Hongkong node-v4.5.0]#
取第一条:
/home/installSoft/gcc-4.8.2/build/stage1-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 (32位|其他)
/home/installSoft/gcc-4.8.2/build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 (64位|本例)
将上面的最新动态库 libstdc++.so.6 复制到 /usr/lib 目录下(32位):
将上面的最新动态库 libstdc++.so.6 复制到 /usr/lib64 目录下(64位):
在64位系统下复制文件重新覆盖,出现?请输入y
cp /home/installSoft/gcc-4.8.2/build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 /usr/lib64
cp /home/installSoft/gcc-4.8.2/build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 /usr/lib64
cp /ftp/gcc-5.3.0/gcc-build-5.3.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 /usr/lib64
复制后,修改系统默认动态库的指向,即:重建默认库的软连接。
cp /ftp/gcc-5.3.0/gcc-build-5.3.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
切换工作目录至/usr/lib64:
cd /usr/lib64
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.21 libstdc++.so.6
完成后再次执行:
[root@Hongkong node-v4.5.0]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
[root@Hongkong node-v4.5.0]#
这里已经查看到: GLIBCXX_3.4.15
添加共享库路径,su到root编辑ld.so.conf文件,添加如下内容到文件中:
vi /etc/ld.so.conf
/usr/local/gcc/mpc-0.8.1/lib
/usr/local/gcc/gmp-4.3.2/lib
/usr/local/gcc/mpfr-2.4.2/lib
/usr/local/gmp-5.1.3/lib
/usr/local/mpfr-3.1.2/lib
/usr/local/mpc-1.0/lib
保存退出,执行ldconfig命令
执行以下看看装好没有:
/usr/local/gcc/bin/gcc -v
gcc version 4.8.2 (GCC)
卸载旧版本
yum remove -y gcc gcc-c++
updatedb
链接新版本
cd /usr/bin
ln -s /usr/local/gcc/bin/gcc gcc
ln -s /usr/local/gcc/bin/g++ g++
检查版本
gcc -v