问题标签 [cross-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1257 浏览

v8 - 如何为 Raspberry Pi 交叉构建最新版本的 V8?

我一直在尝试像这样为 Raspberry Pi 交叉构建 V8:

但是,由于许多不同的原因,它不会编译。我究竟做错了什么?

0 投票
0 回答
444 浏览

scala - 如何让 sbt 为不同的库版本编译不同的源代码?

我知道使用 SBT 可以轻松跨不同的 Scala 版本进行交叉构建。您只需将无法编译的文件放入目录而scala-2.10不是. 但是,如果我想为不同版本的 Scala不同版本的依赖项(比如 Spark 1.6 和 2.1)交叉构建,那该怎么做呢?scala-2.11scala

0 投票
1 回答
1429 浏览

scala - SBT: Cross build project for two Scala versions with different dependencies

I have the following use case. I would like to build the same Scala project for scala 2.10 and 2.12. When doing so I would like to specify some of the dependencies for the 2.10 version as provided whereas I'd like to have those compiled in the jar for 2.12.

I was looking at SBT's docs and found how I can split a build.sbt into separate declarations but those always get mentioned as sub-modules. In my case I'd like to cross-build the whole app - not specific parts of it.

Any hints or resources will be appreciated.

0 投票
0 回答
792 浏览

scala - 哪个maven插件可以解决'[WARNING]'artifactId'包含一个表达式但应该是一个常量'?

从 maven 3 开始,不再建议在 maven pom root artifactId 部分中包含属性变量。

系统将提示用户删除它并显示以下警告:

[警告] 'artifactId' 包含一个表达式,但应该是一个常量。

这会导致交叉构建的 scala 项目出现严重的不兼容问题,该项目应始终在其 artifactId 中包含 _${scala.binary.version}。(发布的工件的确切版本插值可以通过flatten-maven-plugin处理,没什么大不了的)

我尝试了几种可能的替代方法来克服这个问题,包括:

  1. 覆盖构建/最终名称

  2. 覆盖 build/plugins/plugin/maven-jar-plugin/configuration/finalName

  3. 覆盖 build/plugins/plugin/maven-install-plugin/configuration/artifactId。

事实证明,它们都不起作用。处理这种情况的最佳方法是什么?

0 投票
1 回答
301 浏览

c - 从 Win32 交叉构建的静态库中导出函数

我尝试使用i686-w64-mingw32交叉构建工具链构建一个 win32 静态库。

mylib.lib我通过 Makefile构建了目标文件和文件:

这给了我静态库mylib.lib。在 linux 端检查这个,nm我可以看到所有的组成目标文件和它们包含的函数

不,当我mylib.lib在 Windows 10 VM 上检查时,即

我得到:

没有任何功能被导出。

在相关的头文件中,我标记了要导出的函数__declspec(dllexport)

这在我生成 .dll 时效果很好,即我标记为导出的函数是 .dll 文件中唯一可见的函数

但是对于静态库等价物,什么都没有被导出?

您如何使函数在 win32 .lib 文件中可见?

0 投票
0 回答
80 浏览

c - 交叉构建的 COFF 文件和 MSVS 的兼容性

i686-w64-mingw32-gcc我已经在 linux机器上使用交叉构建了一个 win32 静态库。

nm在 linux 端检查了生成的 .lib 文件并查看:

我还在dumpbin /symbolsWindows 端检查了 .lib 文件,并查看:

一位同事正在尝试使用 MSVS2008 使用 lib 构建 exe,并看到如下错误:

nm和输出看起来是否dumpbin合理。如果符号在静态库中,为什么会发生链接错误。难道是交叉构建的库在某种程度上与 MSVS 2008 不兼容吗?

0 投票
0 回答
245 浏览

docker - crossbuild-essential-armel : 来自 debian:jessie 的 Docker 中未满足的依赖项

我有一个 docker 容器,我用它来交叉编译 Debian-jessie 的应用程序。从最近开始我对它没有任何问题,但现在看来我有无法解决的未满足的依赖关系:

The following packages have unmet dependencies: crossbuild-essential-armel : Depends: gcc-arm-linux-gnueabi (>= 4.9.1-1) but it is not going to be installed Depends: g++-arm-linux-gnueabi (>= 4.9.1-1) but it is not going to be installed E: Unable to correct problems, you have held broken packages.

我尝试在其他安装(VM)上执行此操作,但结果完全相同。

下面我粘贴出现错误的构建步骤:

我发现了一个类似问题的问题,但这对我没有太大帮助。
所以我的问题是“我如何开始纠正这个问题并让它发挥作用?”

编辑 1

如果它是相关的,那么问题似乎来自 Debian Jessie 发行版,我无法获得 crossbuild-essential-armel。

编辑 2

我尝试为损坏的软件包安装测试和不稳定分支。他们正在安装,但之后,编译仍然无法正常工作。

0 投票
0 回答
234 浏览

arm - 如何为 ARM Linux 设备交叉构建 luajit-5.1?(尝试构建 LÖVE 框架)

我正在尝试从 Ubuntu 16.04 为 ARM Linux 设备(Rockchip RK3066)交叉构建 LÖVE(https://love2d.org )。

正如文档所说,我在 Ubuntu 上安装了所有依赖项并且能够构建它(对于 Ubuntu,作为测试)。现在我要进行交叉构建。

在构建之前,我必须运行 ./configure。到目前为止,我已经能够让工具链的 gcc 编译器被接受,但是当它查找依赖项时,我得到了这个错误:

这可以通过为设备交叉构建 luajit 并将其添加到工具链二进制文件来解决,还是我可以尝试让 ./configure 脚本查找我在 Ubuntu 中安装的 luajit?

如果是后者,有人会指出我正确的方向吗?我已经打开了 20 页类似的错误消息,但没有一个有有效的答案。

提前非常感谢。

0 投票
0 回答
2332 浏览

go - 如何静态链接外部 Go 库

我有一个用 Golang 编写的小应用程序,它使用 Oci8 进行 Oracle 数据库连接。当我尝试在另一台 Macbook(相同的操作系统版本)上运行我的 Macbook 上构建的二进制文件时,它失败并出现以下错误:

我试图用静态库编译为:

它失败并出现以下错误:

/usr/local/go/pkg/tool/linux_amd64/link:运行 gcc 失败:退出状态 1 /usr/bin/ld:找不到 -lclntsh collect2:ld 返回 1 退出状态

然后我尝试按照如何使用 cgo 在 go 中静态链接 ac 库中的说明进行交叉编译?

那是,

但是,它失败并出现以下错误:

简而言之,我尝试了多个论点。但是,它们要么提供动态链接的二进制文件,要么根本无法编译。

我什至没有尝试在多个操作系统之间分发它。我想要做的是为操作系统构建这个包,比如 Mac,这样它就可以在任何 Mac 机器上运行,而无需显式安装库。

0 投票
1 回答
85 浏览

scala - 工件 ID 中包含的 Scala 和 Scala.js 版本

我刚刚成功地将我的第一个 Scala 和 Scala.js 交叉构建库发布到 Sonatype,现在可以在我的应用程序中使用以下两个工件:

我现在的问题是:为什么 Scala 和 Scala.js 版本包含在工件 ID 中?我不认为我以前见过这样的事情,所以我想知道我是否做错了什么。这是我的build.sbthttps ://github.com/fbaierl/scalajs-cross-compile-tarjan/blob/03954a3e2d1442ad339298a986209c1403c9692e/build.sbt