make: i686-linux-gnu-ld: команда не найдена

Я хочу установить 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+)

1 ответ

Изучив ваши дополнительные комментарии, я считаю, что у меня есть потенциальное решение. Похоже, вы пытаетесь установить некоторые модули Perl через оболочку Perl по умолчанию, cpan, Как часть процесса установки, make Утилита выполняется. Эта утилита широко используется для компиляции и сборки исходного кода из C а также C++ исходный код, наряду с другими языками.

make Утилита пытается вызвать исполняемый файл i686-linux-gnu-ld который является компоновщиком, см. л.д. Линкер - это утилита, используемая в C программирование для объединения (объединения) нескольких скомпилированных объектных файлов в один исполняемый двоичный файл. make называет эту утилиту как своего рода процесс сборки. Вместо звонка i686-linux-gnu-ld это должно быть просто звонить ld, Единственное, в чем я не уверен, так это почему оно использует полное имя утилиты вместо ld,

Я могу придумать два решения. Во-первых, обновите файл make, чтобы использовать правильное имя для компоновщика. Я не уверен, как бы вы сделали это, когда он устанавливается через cpan поскольку он загружает пакет и выполняет файл make, прежде чем вы сможете изменить его. Другой вариант - создать символическую ссылку из неправильного имени и пути ld что файл make использует правильный путь /opt/bin/ld, Это приведет к ld вызывается когда i686-linux-gnu-ld называется. Кроме того, я забыл упомянуть об этом раньше, но which Команда скажет вам, где исполняемый файл / команда находится на пути вашей оболочки.

Пост переполнения стека, Как символическую ссылку на файл в Liunx?, дает хорошее объяснение того, как создать символическую ссылку. Вам нужно создать символическую ссылку, чтобы указать правильное имя и путь компоновщика. Для этого выполните следующую команду:

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

В зависимости от разрешений этих каталогов вам может потребоваться выполнить эту команду под учетной записью с повышенными правами или с помощью sudo, Я прошу прощения за этот пост, довольно длинный и многословный. Я просто хотел подробно объяснить свое решение. Надеюсь, это поможет. Пожалуйста, дайте мне знать, если это не решит проблему.

edit: исправлена ​​опечатка в команде.

Другие вопросы по тегам