【发布时间】:2015-06-09 20:46:07
【问题描述】:
我正在尝试从 node.js 应用程序连接到 DB2。我决定使用db2 node module。安装db2.js的说明首先告诉你像这样安装node-gyp:
sudo npm install -g node-gyp
这似乎对我有用。
然后我尝试使用以下命令安装 db2.js:
sudo npm install -g db2
然后我得到这个错误:
...
cc1plus: error: unrecognized command line option "-std=c++0x"
...
gyp ERR! node -v v0.10.9
gyp ERR! node-gyp -v v0.9.6
看着prereqs for node-gyp,它说我需要gcc。在我的系统上对 gcc 进行操作表明 -std 选项仅支持一些非常旧的编译器,例如 c++98、gnu99 等。我有 gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-50)。
所以我有几个问题。还有其他方法可以从节点连接到 db2 吗?如果我继续使用 db2.js,那么我现在需要做什么,升级我的 gcc 或安装 c++0x 编译器? (我认为那是 C++ 版本 11)。
祝我好运。
编辑:
我在我的 linux 服务器上升级 gcc 时遇到问题,所以我尝试在我的树莓派上安装作为测试:
sudo npm install -g node-gyp
cd /usr/lib/node_modules
sudo git clone https://github.com/herzi/db2.js.git
sudo node-gyp configure
sudo node-gyp build
在最后一个命令我得到这个错误:
In file included from ../src/binding.cc:3:0:
../src/connection.hh:6:20: fatal error: sqlcli.h: No such file or directory
compilation terminated.
我猜那是 DB2 Client 头文件,所以我可能也需要安装它。
编辑 2
我在我的系统上的不同目录中安装了gcc。然后我将/usr/bin 中的符号链接更改为gcc 和g++,以指向我的新gcc 和g++(在gcc 内部)。现在我得到了与我的 pi 相同的 sqlcli.h 错误。是时候获取 DB2 客户端了。
嗯。我有 db2 客户端 9.1.2。根据 db2 binding.gyp 文件中的一些搜索,我需要 9.7。
编辑 3
我安装了“IBM Data Server Runtime Client V9.7”,但/opt/IBM/db2/V9.7/include 文件夹中没有sqlcli.h!我在另一台机器上有一个 V9.1.3,它确实有一个包含文件夹。所以我安装了我的"IBM Data Server Client 9.7" using an old blog post 来帮助我。现在我从 node-gyp 构建中收到一个错误,即未声明 strcmp。我敢打赌我需要设置一个 lib 包含或节点环境变量。
【问题讨论】:
-
为什么投反对票?这与Connecting DB2 from Node.js on Windows-platform 的问题几乎相同,后者有 3 个赞成票。
-
只需升级你的 gcc 编译器。不知道为什么减去。做某事总是有不同的方法,没有人知道什么是对你来说“最好的方法”。
-
仅供参考,这现在正式成为一个兔子洞。我真的很想这样做,但我不知道会有多快的进展。
-
看起来我的下一步是:Build gcc 在 linux 服务器上。为了笑,在我的 pi 上安装 DB2 Client。
-
当。建设
gcc是史诗般的!它已经建造了几个小时。