Centos6.5安装nodejs13

下载nodejs13二进制压缩包,解压后运行./node提示缺库文件。在网上面试并试了好多次后,记录一下。

 

缺失库文件的错误提示:

  1.  
    [root@localhost bin]# ./node
  2.  
    ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./node)
  3.  
    ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./node)
  4.  
    ./node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./node)
  5.  
    ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./node)
  6.  
    ./node: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by ./node)
  7.  
    ./node: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by ./node)
  8.  
    ./node: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./node)

 

一共缺两种:libstdc++.so.6,libc.so.6

去相应的路径看看了看,其实也不算是缺文件,应该说是版本过低,需要升级。

升级的时候需要注意两点:足够的内存大小和硬盘空间。

我是在虚拟机上安装的,一开始不知道,虚拟机只给了8G的硬盘的1G的内存,安装过程中各报了一次错。把内在调到4G,硬盘调到20G后,就正常了。空间要求不高,一般情况下也不会出现这个问题。

在make过程中,会报错缺少c和c++编译器。使用yum进行安装。

yum install gcc

yum install gcc-c++

1、先安装libc.so.6

这个是按照「黑色外套」的博客教程去装的。https://blog.csdn.net/qq708986022/article/details/77896791

1)下载glibc2.17:
wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz

2)解压: 
tar -xzf glibc-2.17.tar.gz

3)创建build目录:
mkdir build

4)进入build目录编译glibc:
cd build
../glibc-2.17/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4
make install

注:如果执行configure的时候报configure: error: support for --no-whole-archive is needed,则把configure命令改成
../glibc-2.17/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include  (我用的这个命令)


5)查看GLIBC版本
执行 strings /lib64/libc.so.6|grep GLIBC 查看版本已经支持GLIBC_2.17
[root@zhx-tserver2 build-2.17]# strings /lib64/libc.so.6|grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE
 

 

重新运行一下./node

  1.  
    [root@localhost bin]# ./node
  2.  
    ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./node)
  3.  
    ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./node)
  4.  
    ./node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./node)
  5.  
    ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./node)

libc.so.6的not found已经没有了。

注意:libc.so.6更新失败的时候,会导致ls、cd这种普通命令失效,救急的办法是在命令前先导入老版本:

$ LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6 // libc-2.12.so 此项是系统升级前的版本

 

2. 安装libstdc++so.6

这个是按照xiaojun11-的博客安装的。https://blog.csdn.net/xiaojun111111/article/details/86492556

 

1.获取gcc4.8.5的源码包(不同的版本,基本是只需要换掉后面的版本号即可更换下载地址)
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
2.解压压缩包
tar -jxvf gcc-4.8.5.tar.bz2
3.进入解压后的目录
cd gcc-4.8.5
4.下载、配置和安装需要的依赖库
./contrib/download_prerequisites
    这个脚本文件会自动帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。

  安装gcc需要下载诸如gmp、mpfr、mpc等依赖文件,执行download_prerequisites将会自动下载这些软件并解压到当前目录(文件不大,总共只有几MB,请耐心等待下载)。
5.直接在当前目录下创建一个目录,存放编译后的文件。
mkdir gcc-build-4.8.5
6.进入这个目录来编译
cd gcc-build-4.8.5
7.生成Makefile文件,准备编译整个项目(gcc4.8.5)
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
    前面的..表示会进入到上一层目录执行configure。所以gcc-build-4.8.5目录必须在gcc-4.8.5里面创建,也就是我们这样创建的。如果你想自己定义gcc-build-4.8.5目录的位置,你要处理好这里的路径问题。不建议处理,一个安装过程而已,不必折腾,就按照上述方法弄就行了。
8.编译gcc4.8.5的源码,非常耗时,时间决定于你的机器的性能。
make
   不建议使用make -j4 方式编译,很可能会失败。-j4选项是make对多核处理器的优化。虽然直接make速度慢点,只要不出错,总体上还是可以接受的。
9.安装gcc4.8.5(非root用户要在前面加sudo)
make install
10.重启系统,让gcc4.8.5生效
reboot
11.查看gcc和g++的版本
gcc --version
g++ --version
    提示为:
gcc (GCC) 4.8.5
g++ (GCC) 4.8.5
    就表示已经安装成功,并且生效了。
    特别注意,第10步很容易被忽略。如果不重启系统,查看的版本还是之前的老版本,会让你误认为安装没有成功的

 

替换系统低版本gcc

系统自带低版本gcc文件位置为/usr/bin/gcc/usr/bin/lib,此时需要将这两个部分删掉,或者后缀加上.bak,然后通过建立软连接的方式替换系统默认位置的gccc++g++文件。

 
  1. mv /usr/bin/c++ /usr/bin/c++.bak

  2. ln -s /usr/local/bin/c++ /usr/bin/c++

  3. mv ./g++ ./g++.bak

  4. ln -s /usr/local/bin/g++ /usr/bin/g++

  5. mv ./gcc ./gcc.bak

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

替换系统gcc动态链接库

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

输出结果如下, 可以看出,gcc的动态库还是处于旧版本,说明生成的动态库没有替换旧版本gcc的动态库。

 
  1. GLIBCXX_3.4

  2. GLIBCXX_3.4.1

  3. GLIBCXX_3.4.2

  4. GLIBCXX_3.4.3

  5. GLIBCXX_3.4.4

  6. GLIBCXX_3.4.5

  7. GLIBCXX_3.4.6

  8. GLIBCXX_3.4.7

  9. GLIBCXX_3.4.8

  10. GLIBCXX_3.4.9

  11. GLIBCXX_3.4.10

  12. GLIBCXX_3.4.11

  13. GLIBCXX_3.4.12

  14. GLIBCXX_3.4.13

查找编译gcc时生成的最新动态库。

find / -name "libstdc++.so*"

列出了新版的gcc动态链接库位置。

/usr/local/lib64/libstdc++.so.6.0.19

将上面的最新动态库libstdc++.so.6.0.19复制到/usr/lib64目录下,并重新建立软连接。

 
  1. cp /usr/local/lib64/libstdc++.so.6.0.19 /usr/lib64

  2. cd /usr/lib64/

  3. rm -f ./libstdc++.so.6

  4. ln -s libstdc++.so.6.0.18 libstdc++.so.6

再次查看gcc版本,以下结果表示动态库升级完成。

 
  1. ...

  2. GLIBCXX_3.4.13

  3. GLIBCXX_3.4.14

  4. GLIBCXX_3.4.15

  5. GLIBCXX_3.4.16

  6. GLIBCXX_3.4.17

  7. GLIBCXX_3.4.18

  8. GLIBCXX_3.4.19

 

node版本下载:

https://npm.taobao.org/mirrors/node/

cd /usr/local/src

tar xzf node-v13.10.1-linux-x64.tar.gz

mv node-v13.10.1-linux-x64 node-v13.10.1

mv node-v13.10.1 /usr/local/

ln -s /usr/local/node-v13.10.1/bin/node /usr/local/bin/node

ln -s /usr/local/node-v13.10.1/bin/npm /usr/local/bin/npm

 

设置淘宝源
npm config set registry https://registry.npm.taobao.org

//在NPM 中安装
npm install -g yarn

ln -s /usr/local/node-v13.10.1/bin/yarn /usr/local/bin/yarn

ln -s /usr/local/node-v13.10.1/bin/yarnpkg /usr/local/bin/yarnpkg

设置淘宝源
yarn config set registry https://registry.npm.taobao.org





 

 

 

posted on 2020-11-11 00:05  EOS666  阅读(483)  评论(0编辑  收藏  举报

导航