我正在尝试使用npm install安装node.js模块(在本例中为zmq)。此模块所需的C lib未安装在标准位置。如何为npm指定额外的包含路径和lib路径?我尝试过像“CFLAGS =” - I / path / to / include“npm install”之类的东西,但没效果。
答案 0 :(得分:4)
zeromq module可以如下构建(其他模块可以相同):
/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 /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