После рассмотрения ваших дополнительных комментариев, я считаю, что у меня есть потенциальное решение. Похоже, вы пытаетесь установить некоторые модули Perl через оболочку Perl по умолчанию, cpan
. В рамках процесса установки запускается утилита make
. Эта утилита широко используется для компиляции и сборки исходного кода из C
и C++
исходного кода, наряду с другими языками.
Утилита 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
сообщит вам, где находится исполняемый файл / команда на пути вашей оболочки.
Сообщение о переполнении стека, Как создать символическую ссылку на файл в Liunx? , дает хорошее объяснение того, как создать символическую ссылку. Вам необходимо создать символическую ссылку, чтобы указать правильное имя и путь компоновщика. Для этого выполните следующую команду:
ln -s /opt/bin/ld /usr/bin/i686-linux-gnu-ld
В зависимости от разрешений этих каталогов вам может потребоваться выполнить эту команду под учетной записью с повышенными правами доступа или через sudo
. Я прошу прощения за этот пост довольно длинный и многословный. Я просто хотел подробно объяснить свое решение. Надеюсь, это поможет. Пожалуйста, дайте мне знать, если это не решит проблему.
edit: исправлена опечатка в команде.