如何在node.js npm中指定包含路径和库路径

4

我正在尝试使用npm install安装一个node.js模块(在这种情况下是zmq)。该模块所需的C库未安装在标准位置。我应该如何向npm指定额外的包含路径和库路径呢?我已经尝试了像"CFLAGS="-I/path/to/include" npm install"这样的方式,但没有效果。


我一直在解决同样的问题,通过在npm安装之前设置CXXFLAGS以及在LDFLAGS中设置-L,最终解决了这个问题。 - John
可能重复:https://dev59.com/-Irda4cB1Zd3GeqPHRHZ - Bernardo Ramos
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

0
另一个解决方案(不需要任何文件更改)是使用pkg-config的PKG_CONFIG_PATH变量,该变量应指向库所安装的位置。如果zmq已安装在/opt/zmq,则PKG_CONFIG_PATH=/opt/zmq/lib/pkgconfig pkg-config libzmq --libs应返回-L/opt/zmq/lib -lzmq,并且可以通过PKG_CONFIG_PATH=/opt/zmq/lib/pkgconfig npm install运行npm install。
在启动node应用程序之前,必须相应地设置LD_LIBRARY_PATH,即:LD_LIBRARY_PATH=/opt/zmq/lib node app.js

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接