Background
最近准备升级一下PROD服务器上的node-oracledb
版本.
但是遇到一个很奇怪的现象,就是我本地无法构建出服务器上可用的oracledb
.
(因为部署方式是打包部署而不是从git
拉代码部署)
一开始以为是C++运行库
的原因.
因为又仔细读了一遍node-oracledb
的官方安装文档,发现oracledb
在编译的时候,只支持支持C++11
的编译器.
立马查看本地环境的gcc
版本与运行库版本glibc
1
2gcc -v
ldd --version
发现本地CentOS 6.6
版本自带的gcc
版本是4.4,glibc
版本是2.12
但是支持编译和运行C++11新特性的gcc
版本是4.7+,glibc
版本是2.14+
这.版本都不一样怎么玩.
RootCause
马上比较了一下 本地构建oracledb
与服务器的各种版本
发现相关的版本信息如下:
服务器
OS:RedHat Enterprise Linux 6.6
gcc Version:4.4 (Red Hat)
glibc Version:2.12
node Version:v0.10.38
npm Version:1.4.28(npm版本应该不会影响构建,预防万一还是提及一下)
node-gyp Version:不明.因为没权限调用该命令.
oracle instantclient Version:11.2本地环境
OS:CentOS 6.7 x64
gcc Version:4.4 (Red Hat)
glibc Version:2.12
node Version:v4.2.4
npm Version:2.14.8
node-gyp Version:3.2.1
oracle instantclient Version:11.2
Solution
思前想后,想想也不知道node.js
本身版本到底会对oracledb
的构建有什么影响.
毕竟oracledb
官方对构建时的C++11
编译支持的要求先入为主了
最后还是决定先切换一下node.js
版本,结果问题顺利解决
1 | $npm install n |
构建成功.