0

我一直在尝试在 aarch64 设备上安装 therubyracer gem。我从源代码交叉编译了 v8(我有一个编译后的 arm64.release 文件夹),但不知道把它放在哪里。我还通过从 ruby​​gems 下载 arm 所需版本的 .gem 文件成功安装了 libv8,并通过运行gem install path_to_gem. 我还将它添加到 gemfile 中:

gem 'libv8', path: '~/.gem/ruby/1.9.1/gems/libv8-3.16.14.11'

但是,当我运行 bundle install 并尝试安装 therubyracer 时,我收到错误,因为它尝试再次编译依赖项,尽管它已经安装。我猜它没有检测到已经安装了 libv8。我也不知道将交叉编译的 v8 放在哪里,所以我的系统会检测到它。我正在使用 arm64 ubuntu 的一个版本。

这样做gem install therubyracer -v '0.12.2' -- --with-system-v8也不起作用,它无论如何都会尝试编译 v8。

请注意,我需要所有东西都与 ruby​​ 1.9.3 和 rails 3.2 兼容,并且我需要在 aarch64/arm64 设备上使用它。

我尝试在 therubyracer github 上询问,但没有得到任何答案,因为它已经很旧了。

4

1 回答 1

0

我需要使用这些库的旧版本(therubyracer 0.12.2、libv8 3.16.14)并且我需要在 aarch64/arm64 设备上使用它们

不幸的是,V8 3.16.14(2013 年2 月!)不支持 arm64。大约一年后,对 arm64 的支持得到了支持,最初名为“a64”,几周后重命名为“arm64”。

如果您在设备上运行 arm32+arm64 “multilib”配置(Ubuntu 支持但不推荐),您可以尝试让 32 位 ARM 版本的 V8 和 therubyracer 工作。(我不知道这将如何完成或是否会有其他障碍;libv8 gem提到了一个问题,但这似乎与您的情况无关。)

于 2021-12-12T15:01:33.463 回答