如何从Windows跨编译Node模块到Linux?

4
这里是情况:
  • 我在Windows上编写了一个小型的Node应用程序。此应用程序需要一些非核心的Node模块,例如“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 - CodingIntrigue
谢谢Graham。然而,正如我所说的,我想在嵌入式的Linux上运行我的应用程序,但是它没有编译器,也无法访问互联网,这意味着没有像npm或gyp这样简单的命令-->我正在寻找通过交叉编译在另一个操作系统(Windows)上完成此操作的方法。 - Darkiwi
啊,我明白了,这里有一些相关的阅读材料供您参考 - http://enclosejs.com/ 和 https://dev59.com/o2ox5IYBdhLWcg3wIQ5o - CodingIntrigue
谢谢您的回复。然而,问题仍然存在:这些引线与需要编译的模块不兼容:(我还在寻找,正在研究使用node-gyp进行交叉编译,但这似乎并不容易... - Darkiwi
我只知道3-4年前读过的内容,但是mingw用户组有很多关于交叉编译(使用gcc)的讨论。请参见http://mingw.5.n7.nabble.com/MinGW-User-f3.html,这是一个非常易于搜索的界面,可以找到这些讨论。祝你好运。 - shellter
1个回答

0

关于这个问题,看起来我们无法实现,我们不得不放弃这种方法并采取其他措施。


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