如何在node.js中指定include和lib路径?



我试图用npm install安装node.js模块(在这种情况下是zmq)。此模块所需的C库没有安装在标准位置。我如何指定额外的包含路径和lib路径到npm?我试过像"CFLAGS="-I/path/to/include" npm install"这样的东西,但没有效果。

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 /tmp/zeromq.node-master 上运行npm install

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

在node app启动前,LD_LIBRARY_PATH必须相应设置,即:LD_LIBRARY_PATH=/opt/zmq/lib node app.js

相关内容

  • 没有找到相关文章

最新更新