node.js源码编译快速安装

官网:node

https://nodejs.org/en/linux

1-系统环境c++

2-下载安装git

wget https://github.com/nodejs/node/archive/v6.9.4.tar.gzgithub

3-解压并编译安装express

tar -zxf v6.9.4.tar.gz ide

cd node-6.9.4ui

./configure this

makespa

make install

=====================

源码包安装,解压就能够使用

下载包 node-v6.9.4-linux-x64.tar.xz

解压 tar -xf node-v6.9.4-linux-x64.tar.xz

将bin目录加入PATH环境变量

echo $PATH
/usr/local/node/node-v6.9.1-linux-x64/bin:

=====================

 

 

==========编译make报错一==========

解决办法,升级gcc 到4.8以上

../deps/v8/src/base/logging.h:131: error: ‘nullptr’ was not declared in this scope
In file included from ../deps/v8/src/libplatform/default-platform.h:15,

 from ../deps/v8/src/libplatform/default-platform.cc:5:
../deps/v8/src/base/platform/mutex.h: At global scope:
../deps/v8/src/base/platform/mutex.h:36: error: variable ‘v8::base::Mutex v8::base::final’ has initializer but incomplete type
../deps/v8/src/base/platform/mutex.h:37: error: expected primary-expression before ‘public’
../deps/v8/src/base/platform/mutex.h:37: error: expected ‘}’ before ‘public’
../deps/v8/src/base/platform/mutex.h:37: error: expected ‘,’ or ‘;’ before ‘public’
../deps/v8/src/base/platform/mutex.h:39: error: expected constructor, destructor, or type conversion before ‘;’ token
../deps/v8/src/base/platform/mutex.h: In function ‘v8::base::NativeHandle& v8::base::native_handle()’:
../deps/v8/src/base/platform/mutex.h:63: error: ‘native_handle_’ was not declared in this scope
../deps/v8/src/base/platform/mutex.h: At global scope:
../deps/v8/src/base/platform/mutex.h:65: error: non-member function ‘const v8::base::NativeHandle& v8::base::native_handle()’ cannot have cv-qualifier
../deps/v8/src/base/platform/mutex.h: In function ‘const v8::base::NativeHandle& v8::base::native_handle()’:
../deps/v8/src/base/platform/mutex.h:65: error: new declaration ‘const v8::base::NativeHandle& v8::base::native_handle()’
../deps/v8/src/base/platform/mutex.h:62: error: ambiguates old declaration ‘v8::base::NativeHandle& v8::base::native_handle()’
../deps/v8/src/base/platform/mutex.h:66: error: ‘native_handle_’ was not declared in this scope
../deps/v8/src/base/platform/mutex.h: At global scope:
../deps/v8/src/base/platform/mutex.h:69: error: expected unqualified-id before ‘private’
../deps/v8/src/base/platform/mutex.h:89: error: ‘friend’ used outside of class
../deps/v8/src/base/platform/mutex.h:91: error: expected unqualified-id before ‘const’
../deps/v8/src/base/platform/mutex.h:91: error: expected ‘)’ before ‘const’
../deps/v8/src/base/platform/mutex.h:91: error: ‘void v8::base::operator=(const v8::base::Mutex&)’ must be a nonstatic member function
../deps/v8/src/base/platform/mutex.h:104: error: expected initializer before ‘<’ token
../deps/v8/src/base/platform/mutex.h:130: error: variable ‘v8::RecursiveMutex v8::final’ has initializer but incomplete type
../deps/v8/src/base/platform/mutex.h:131: error: expected primary-expression before ‘public’
../deps/v8/src/base/platform/mutex.h:131: error: expected ‘}’ before ‘public’
../deps/v8/src/base/platform/mutex.h:131: error: expected ‘,’ or ‘;’ before ‘public’
../deps/v8/src/base/platform/mutex.h:133: error: expected constructor, destructor, or type conversion before ‘;’ token
../deps/v8/src/base/platform/mutex.h:155: error: ‘Mutex’ has not been declared
../deps/v8/src/base/platform/mutex.h:155: error: expected initializer before ‘NativeHandle’
../deps/v8/src/base/platform/mutex.h:157: error: expected constructor, destructor, or type conversion before ‘&’ token
../deps/v8/src/base/platform/mutex.h:160: error: expected initializer before ‘&’ token
../deps/v8/src/base/platform/mutex.h:164: error: expected unqualified-id before ‘private’
../deps/v8/src/base/platform/mutex.h:170: error: expected unqualified-id before ‘const’
../deps/v8/src/base/platform/mutex.h:170: error: expected ‘)’ before ‘const’
../deps/v8/src/base/platform/mutex.h:170: error: ‘void v8::operator=(const v8::RecursiveMutex&)’ must be a nonstatic member function
../deps/v8/src/base/platform/mutex.h:184: error: expected initializer before ‘<’ token
../deps/v8/src/base/platform/mutex.h:202: error: template declaration of ‘LockGuard final’
../deps/v8/src/base/platform/mutex.h:203: error: expected primary-expression before ‘public’
../deps/v8/src/base/platform/mutex.h:203: error: expected ‘}’ before ‘public’
../deps/v8/src/base/platform/mutex.h:205: error: declaration of ‘~LockGuard’ as non-member
../deps/v8/src/base/platform/mutex.h:207: error: expected unqualified-id before ‘private’
../deps/v8/src/base/platform/mutex.h:210: error: expected unqualified-id before ‘const’
../deps/v8/src/base/platform/mutex.h:210: error: expected ‘)’ before ‘const’
../deps/v8/src/base/platform/mutex.h:210: error: ‘void operator=(const LockGuard&)’ must be a nonstatic member function
../deps/v8/src/base/platform/mutex.h:211: error: expected declaration before ‘}’ token
make[1]:***[/home/lsug/node-6.9.4/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/default-platform.o] Error 1
make[1]: Leaving directory `/home/lsug/node-6.9.4/out'
make: *** [node] Error 2

============报错二=====
/home/lsug/node-6.9.4/out/Release/mksnapshot: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/lsug/node-6.9.4/out/Release/mksnapshot)
/home/lsug/node-6.9.4/out/Release/mksnapshot: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/lsug/node-6.9.4/out/Release/mksnapshot)
/home/lsug/node-6.9.4/out/Release/mksnapshot: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/lsug/node-6.9.4/out/Release/mksnapshot)
make[1]: *** [/home/lsug/node-6.9.4/out/Release/obj.target/v8_snapshot/geni/snapshot.cc] Error 1
make[1]: Leaving directory `/home/lsug/node-6.9.4/out'
make: *** [node] Error 2

缘由:

升级gcc生成的动态库没有替换老版本gcc的动态库

解决办法:

升级gcc,生成的动态库没有替换老版本gcc的动态库

源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现相似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是由于升级gcc时,生成的动态库没有替换老版本gcc的动态库致使的,将gcc最新版本的动态库替换系统中老版本的动态库便可解决。

 运行如下命令检查动态库:

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

从输出能够看出,gcc的动态库仍是旧版本的。说明出现这些问题,是由于升级gcc时,生成的动态库没有替换老版本gcc的动态库。

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

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

将上面的最新动态库libstdc++.so.6.0.22复制到/usr/lib64目录下

cd /usr/lib64

sudo cp /home/lsug/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 ./

 删除原来软链接:

rm -rf libstdc++.so.6

将默认库的软链接指向最新动态库:

ln -s libstdc++.so.6.0.22 libstdc++.so.6

默认动态库升级完成。从新运行如下命令检查动态库:

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

[lsug@minion node-6.9.4]$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
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_3.4.20
GLIBCXX_3.4.21

GLIBCXX_3.4.22
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

能够看到 输出有"GLIBCXX_3.4.15,20和21" 了

相关文章
相关标签/搜索