4

我正在尝试使用 npm install 安装 node.js 模块(在本例中为 zmq)。此模块所需的 C 库未安装在标准位置。如何为 npm 指定额外的包含路径和库路径?我已经尝试过诸如“CFLAGS="-I/path/to/include" npm install" 之类的东西,但没有任何效果。

4

2 回答 2

4

zeromq模块可以如下构建(其他模块可能工作相同):

  • 下载 zip 文件并解压到一个临时位置,例如/tmp/zeromq.node-master
  • 编辑binding.gyp文件
  • 找到与您的操作系统对应的部分,并在那里添加您的包含-I和库-L路径。

例如

['OS=="linux"', {
  'cflags': [
    '<!(pkg-config libzmq --cflags 2>/dev/null || echo "")',
    '-I/usr/local/zeromq3/include'
  ],
  'libraries': [
    '<!(pkg-config libzmq --libs 2>/dev/null || echo "")',
    '-L/usr/local/zeromq3/lib'
  ],
}],
  • 在临时目录上运行 npm install: npm install /tmp/zeromq.node-master
于 2013-06-06T14:26:22.597 回答
0

另一种解决方案(不需要任何文件更改)是使用 pkg-config 的PKG_CONFIG_PATH变量,它应该指向安装库的位置。如果 zmq 已经安装在/opt/zmqthenPKG_CONFIG_PATH=/opt/zmq/lib/pkgconfig pkg-config libzmq --libs应该返回-L/opt/zmq/lib -lzmq并且npm install可以运行 PKG_CONFIG_PATH=/opt/zmq/lib/pkgconfig npm install

在节点应用程序启动之前LD_LIBRARY_PATH必须进行相应的设置,即:LD_LIBRARY_PATH=/opt/zmq/lib node app.js

于 2016-01-06T09:39:20.627 回答