如何指定node.js npm的include和lib路径

时间:2013-03-26 14:32:10

标签: node.js npm

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

2 个答案:

答案 0 :(得分:4)

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

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

e.g。

['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

答案 1 :(得分:0)

另一个解决方案(不需要任何文件更改)是使用pkg-config的PKG_CONFIG_PATH变量,该变量应指向安装库的位置。如果已在/opt/zmq安装zmq,则PKG_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