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