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: исправлена опечатка в команде.