【问题标题】:How to cross compile node modules from Windows to Linux?如何将节点模块从 Windows 交叉编译到 Linux?
【发布时间】: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.comstackoverflow.com/questions/9413123/…
  • 感谢您的反应 :-) 但是,问题仍然存在:这些线索不适用于需要编译的模块 :( 仍在搜索,我正在研究使用 node-gyp 进行交叉编译但这似乎并不容易......
  • 我只知道我在 3-4 年前读过的内容,但mingw 用户组有很多关于交叉编译(使用 gcc)的讨论。请参阅mingw.5.n7.nabble.com/MinGW-User-f3.html 以获得这些讨论的非常可搜索的界面。祝你好运。

标签: linux node.js windows


【解决方案1】:

关于信息,这似乎是不可能的,我们不得不放弃这种方法并做其他事情。

【讨论】:

    猜你喜欢
    • 2014-01-16
    • 2021-06-02
    • 2021-11-20
    • 2022-06-12
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多