首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Raku构建多个后端失败

为Raku构建多个后端失败
EN

Stack Overflow用户
提问于 2020-04-25 18:14:01
回答 1查看 199关注 0票数 6

在专门阅读了https://github.com/rakudo/rakudo at https://github.com/rakudo/rakudo 这里的文章之后,我大胆地为rakudo构建了多个后端。

我用64位Ubuntu 20.04来做这个。我先安装了

  • build essentiallibencode-perl
  • default-jdk准备的机器,以便编译rakudo。

克隆repo之后,当我运行命令perl Configure.pl --backends=moar,jvm --prefix=/usr时,会得到以下错误:

代码语言:javascript
复制
root@1145eac1ed77:/rakudo# perl Configure.pl --backends=moar,jvm --prefix=/usr
No pre-existing installed file found at /usr/bin/nqp-m
No pre-existing installed file found at /usr/bin/nqp-j
No pre-existing installed file found at /usr/bin/nqp-m
No pre-existing installed file found at /usr/bin/nqp-j
Use of uninitialized value $str in substitution (s///) at /rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 1420.
Use of uninitialized value $str in substitution (s///) at /rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 1421.
Use of uninitialized value in concatenation (.) or string at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 361.
Use of uninitialized value in quotemeta at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 371.
Use of uninitialized value in substitution (s///) at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 371.
Use of uninitialized value in substitution (s///) at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 371.
Use of uninitialized value in quotemeta at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 373.
Use of uninitialized value in sprintf at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 414.
Redundant argument in sprintf at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 414.
Use of uninitialized value in concatenation (.) or string at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 423.
Use of uninitialized value in concatenation (.) or string at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 423.
Using /usr/bin/nqp-m (version  / MoarVM ).
Use of uninitialized value in sprintf at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 428.
Redundant argument in sprintf at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 428.
===SORRY!===
  jvm::runtime.jars value not available from /usr/bin/nqp-j --show-config.

  To automatically clone (git) and build a copy of NQP 2020.02.1-154-ga7b0b7be2,
  try re-running Configure.pl with the '--gen-moar' option.
  Or, use '--prefix=' to explicitly specify the path where the NQP and MoarVM
  executables can be found that are use to build Rakudo. at /rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 192.
 at /rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 34.
        NQP::Config::__ANON__("===SORRY!===\x{a}  jvm::runtime.jars value not available from /us"...) called at /rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 192
        NQP::Config::sorry(NQP::Config::Rakudo=HASH(0x55e4cb9c5258), "jvm::runtime.jars value not available from /usr/bin/nqp-j --s"..., "\x{a}To automatically clone (git) and build a copy of NQP 2020.02"..., "try re-running Configure.pl with the '--gen-moar' option.", "Or, use '--prefix=' to explicitly specify the path where the "..., "executables can be found that are use to build Rakudo.") called at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 576
        NQP::Config::Rakudo::post_active_backends(NQP::Config::Rakudo=HASH(0x55e4cb9c5258)) called at /rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 660
        NQP::Config::configure_active_backends(NQP::Config::Rakudo=HASH(0x55e4cb9c5258)) called at /rakudo/tools/lib/NQP/Config/Rakudo.pm line 473
        NQP::Config::Rakudo::configure_active_backends(NQP::Config::Rakudo=HASH(0x55e4cb9c5258)) called at Configure.pl line 102

怎么能修好呢?

我想知道命令ALLperl Configure.pl --backends=ALL所指的是什么。

、Rakudo.js、这里这里都有一个项目(我想它仍然合并在master中)。这是Javascript后端吗?ALL的意思是moarjvmJavascript后端吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-26 19:18:31

正如@ugexe所指出的,我在命令中丢失了--gen-moar

为了将来的参考,我想记录一下我在尝试构建Rakudo之后学到的东西。

Moar和JVM后端

对于构建moarjvm后端,您需要依赖项

代码语言:javascript
复制
apt-get install -y gcc \
        libc6-dev \
        libencode-perl \
        wget \
        libzstd-dev \
        default-jdk \
        make

并运行命令

代码语言:javascript
复制
perl Configure.pl --prefix=/usr --gen-moar --backends=moar,jvm --relocatable

用于建筑。成功构建之后,您将得到rakudo-mrakudo-gdb-mrakudo-valgrind-mmoar后端的rakudo-lldb-mjvm后端的rakudo-jrakudo-debug-j

Javascript和Moar后端

您不能构建孤立的javascript后端。在构建js后端moar时。所以要构建javascript后端,要构建的命令是,

代码语言:javascript
复制
perl Configure.pl --prefix=/usr --gen-moar --backends=moar,js --relocatable

构建javascript后端的额外依赖关系是nodejsg++npm的可用性。

代码语言:javascript
复制
apt-get install gcc g++ \
        libc6-dev \
        libencode-perl \
        wget \
        libzstd-dev \
        nodejs \
        npm \
        make

但是在构建javascript后端时,我得到了以下错误:

代码语言:javascript
复制
'/usr/bin/perl' tools/build/npm-install-or-link.pl . src/vm/js/nqp-runtime nqp-runtime 
Can't exec "npm": No such file or directory at tools/build/npm-install-or-link.pl line 18.
=== SORRY! === `npm install /rakudo/nqp/src/vm/js/nqp-runtime` failed with exit code -1 (72057594037927935)
make: *** [Makefile:852: js-deps] Error 255

搜索揭示

如果您正在开发nqp-js,则可能需要传递--link选项,以便将nqp-运行时链接到而不是已安装。

尽管构建孤立的NQP没有问题。我不知道如何建立npm链接,同时自动化的建立拉库多。

所有后端

我了解到ALL实际上是指moarjvmjs后端。这是在运行命令时确认的。

代码语言:javascript
复制
perl Configure.pl --prefix=/usr --gen-moar --backends=ALL --relocatable

您可以在您的终端中看到以下内容:

代码语言:javascript
复制
/usr/bin/perl Configure.pl --prefix=/usr --make-install --git-protocol=https --relocatable --no-ignore-errors --silent-build --no-force-rebuild --backends=moar,jvm,js --gen-moar

它的依赖项将是

代码语言:javascript
复制
apt-get install gcc g++ \
        libc6-dev \
        libencode-perl \
        wget \
        libzstd-dev \
        default-jdk \
        nodejs \
        npm \
        make

如果通过解决上面的npm link问题可以成功地构建Javascript后端,我相信所有后端都可以构建:moarjvmjavascript

因此,这里留下的问题是如何在构建的同时建立npm链接。希望有人的专业帮助能解决这个问题。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61430360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档