我使用的是 alpine:3.6,我已经在系统上安装了(从源代码编译的)zeromq 二进制文件。
现在我想为此使用nodejs 的绑定(bind)。 所以使用https://github.com/JustinTulloss/zeromq.node
这里有一些说明,我们可以从源代码构建库。 https://github.com/JustinTulloss/zeromq.node/wiki/Installation#installation-on-linux--bsd-without-root-access
我们可以自己编译lib,但是将二进制文件放在同一个文件夹中,但我希望npm使用安装在系统(/use/local)中的库 据我所知,这两条线的游戏我对此不太了解
export CXXFLAGS="-I $(readlink -f ../include)"
export LDFLAGS="-L $(readlink -f ../lib) -Wl,-rpath=$(readlink -f ../lib)"
然后npm install
将使用我们刚刚在zeromq
文件夹中编译的库
我对 CXXFLAGS 和 LDFLAGS 不太了解,所以这可能吗?
最佳答案
您引用的安装说明适用于没有 root
访问权限的人员,因此无法在 /usr
或 /usr/local
等“常用位置”安装软件。如果将库安装到“不寻常的位置”(例如主目录),则必须告诉编译器和链接器可以在哪里找到该库。这就是本例中 CXXFLAGS
和 LDFLAGS
的使用。由于您似乎拥有 root
访问权限并在“通常的位置”安装了 ZeroMQ 库,因此 npm install zmq
应该可以在您没有设置这些变量的情况下工作。
更新:以上似乎不起作用。然而,根据https://github.com/JustinTulloss/zeromq.node#project-status ,无论如何,这个模块已被弃用。新的 Zeromq 模型无需编译即可工作。查看这个最小的 Dockerfile:
FROM node:alpine
RUN npm install zeromq
注意:这不使用预安装的库,而是使用预构建的库。但是,您可以从基础镜像中删除预安装的库以节省大小。
关于node.js - 如何在 npm install 中使用预安装的二进制文件(zeromq)而不是使用 node-gyp 工具构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45939766/