1

我想安装cpanm WWW::Curl::Form在我的 Synology NAS 上。但这失败了。这是输出cpanm WWW::Curl::Form WWW::Curl::Easy File::Find::Rule String::CRC32 URI::Escape --> Working on WWW::Curl::Form Fetching http://www.cpan.org/authors/id/S/SZ/SZBALINT/WWW-Curl-4.17.tar.gz ... OK Configuring WWW-Curl-4.17 ... OK Building and testing WWW-Curl-4.17 ... FAIL ! Installing WWW::Curl::Form failed. See /var/services/homes/fox/.cpanm/work/1541095458.25803/build.log

日志文件给了我:

make: i686-linux-gnu-ld: Command not found

但我不知道如何在我的 Synology NAS 上修复它(DSM 6.2 和 appollolake 架构 DS918+)

4

1 回答 1

0

在查看了您的其他评论后,我相信我有潜在的解决方案。看起来您正试图通过默认的 Perl shell 安装一些 Perl 模块,cpan. 作为安装过程的一部分,make正在执行该实用程序。该实用程序大量用于编译和构建源代码CC++源代码以及其他语言。

make实用程序正在尝试调用一些i686-linux-gnu-ld作为链接器的可执行文件,请参见ld。链接器是一种用于C编程的实用程序,用于将多个编译的目标文件链接(组合)成单个可执行二进制文件。make将此实用程序称为某种构建过程。而不是调用i686-linux-gnu-ld它可能应该只是调用ld. 我唯一不确定的是为什么它使用实用程序的全名而不是ld.

我可以想到两种解决方案。首先是更新 make 文件以使用正确的链接器名称。我不确定在通过安装它时您将如何执行此操作,cpan因为它正在下载一个包并在您有机会修改它之前执行 make 文件。ld另一种选择是从make 文件使用的错误名称和路径到正确路径创建符号链接/opt/bin/ld。这将导致在ld被调用时i686-linux-gnu-ld被调用。另外,我之前忘了提它,但是该which命令会告诉您可执行文件 / 命令在您的 shell 路径中的位置。

Stack Overflow 帖子,如何在 Liunx 中对文件进行符号链接?,很好地解释了如何创建符号链接。您需要创建一个符号链接以指向链接器的正确名称和路径。为此,请运行以下命令:

ln -s /opt/bin/ld /usr/bin/i686-linux-gnu-ld

根据这些目录的权限,您可能需要在具有提升权限的帐户下或通过sudo. 我为这篇文章相当长而冗长而道歉。我只是想详细解释我的解决方案。我希望这有帮助。如果这不能解决问题,请告诉我。

编辑:修复了命令中的错字。

于 2018-11-02T12:37:38.160 回答