【发布时间】:2015-12-07 14:07:12
【问题描述】:
情况如下:
我在 Windows 上编写了一个小型节点应用程序。此应用程序需要一些非核心节点模块,例如“ffi”和“express”。我已经用 npm 安装了,一切正常。
现在我想将此应用程序移植到嵌入式构建根 Linux 发行版上,该发行版没有编译器也没有互联网访问权限。
-
起初,在解释 js 时,我认为只需复制模块即可,但出现“无效 ELF 标头”错误,因此这些模块似乎需要编译,因此取决于操作系统。
李>
问题:
所以我想从我的 Windows 机器上为这个嵌入式 linux 发行版生成这些模块。
我已经有了交叉编译器,因为我将它用于这个嵌入式 linux 上的主要应用程序(通过 cmake 和 eclipse)。
--> 如何生成这些模块?
我需要生成一个针对正确操作系统的 makefile 吗?如果有,怎么做?
或者我需要使用 gyp 吗?如果有,怎么做?
还有其他方法吗? (如果绝对必要,我可以在虚拟机中使用 linux,但这会使它变得更重,而且我仍然需要交叉编译,所以这是最后的手段)。
我是一名 C/C++ Windows 开发人员。我对 Node、js 和 linux 几乎没有经验,所以请在你的回答中明确说明。
非常感谢。
【问题讨论】:
-
通常你不需要担心 NodeJS 中的多平台问题,因为 v8 运行时是本地运行的,它会执行 javascript,但
ffi正在调用本机代码,因此您需要确保 node-gyp is set up correctly on each target system -
谢谢格雷厄姆。但是,正如我所说,我想在其上运行我的应用程序的 linux 是嵌入式的,没有编译器也没有访问互联网,这意味着没有像 npm 或 gyp 这样的简单命令 --> 我正在寻找一种在另一个操作系统上执行此操作的方法(Windows ) 通过交叉编译。
-
啊,我明白了,然后给你一些相关阅读 - enclosejs.com 和 stackoverflow.com/questions/9413123/…
-
感谢您的反应 :-) 但是,问题仍然存在:这些线索不适用于需要编译的模块 :( 仍在搜索,我正在研究使用 node-gyp 进行交叉编译但这似乎并不容易......
-
我只知道我在 3-4 年前读过的内容,但
mingw用户组有很多关于交叉编译(使用 gcc)的讨论。请参阅mingw.5.n7.nabble.com/MinGW-User-f3.html 以获得这些讨论的非常可搜索的界面。祝你好运。