标题:gcc-4.4.7升级至gcc-5.3.0 后编译安装node-v4.5.0 出处:刘新修 时间:Fri, 02 Sep 2016 15:19:14 +0000 作者:刘新修 地址:http://liuxinxiu.com:80/gcc_upgrade_nodeJs_install/ 内容: 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 Generated by Bo-blog 2.1.1 Release