Ich habe versucht, rvm mit zu installieren \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles
. Es funktionierte einwandfrei, bis ich einen Konfigurationsfehler bekam:
Error running './configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared',
please read /home/nishant/.rvm/log/1379591052_ruby-2.0.0-p247/configure.log
There has been an error while running configure. Halting the installation.
Im Folgenden ist der Inhalt der genannten Protokolldatei aufgeführt:
[2013-09-19 17:15:58] ./configure
current path: /home/nishant/.rvm/src/ruby-2.0.0-p247
command(4): ./configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/nishant/.rvm/src/ruby-2.0.0-p247':
configure: error: C compiler cannot create executables
See `config.log' for more details
Ich habe dann ein "Hallo Welt" C-Programm ausprobiert und folgenden Fehler beim Kompilieren erhalten:
nishant@nishant-Inspiron-1545:~$ gcc -g -o hello hello.c
/usr/local/bin/ld: this linker was not configured to use sysroots
collect2: error: ld returned 1 exit status
Ich bin nicht sicher, warum dieser Fehler ausgelöst wird. Ich konnte keine zufriedenstellende Antwort auf diese Frage im Forum finden. Könnte jemand bitte helfen. Vielen Dank
Antworten:
Es sieht so aus, als hätten Sie eine nicht standardmäßige Version des GNU-Linkers
ld
in Ihrem/usr/local/bin
Verzeichnis (möglicherweise von der Quelle installiert), und Ihre PATH-Umgebungsvariable ist so eingestellt, dass das System diese Version vor der 'System'-Version findet (die sich auf befinden sollte/usr/bin/ld
). . Wenn Sie mit den Standardsystemversionen der Build-Tools erstellen möchten , müssen Sie die Umgebungsvariable PATH so anpassen, dass sie/usr/bin
vor der Suche angezeigt wird/usr/local/bin
Wenn Sie Ihre PATH-Variable dauerhaft reparieren möchten, müssen Sie herausfinden, wo Sie sie ursprünglich festgelegt haben - wahrscheinlich in Ihrer ~ / .bashrc-Datei, aber andere Speicherorte sind möglich. Alternativ können Sie es versuchen, wenn Sie nur eine temporäre Korrektur für diesen Build benötigen
im Terminal vor dem Ausführen der
./configure
Es gibt jedoch manchmal gute Gründe, warum Sie (oder Ihr Systemadministrator) möchten, dass Sie Versionen von Tools von verwenden.
/usr/local
Wenn ja, müssen Sie herausfinden, warum dieseld
anscheinend nicht mit dem Rest der Build-Kette kompatibel sind und Fehler beheben it - Wenn dies ein Arbeits- oder Schulsystem ist, wenden Sie sich an Ihren Systemadministrator oder an die IT-Abteilung.quelle
/usr/local/bin
ist vor/usr/bin
in dasPATH
aus gutem Grund: Es gibt keinen Sinn , ein Programm in mit lokal installiert , wenn die Version von der Verteilung Vorrang. Gute Arbeit, um das Problem zu erkennen, aber die empfohlene Lösung besteht nicht darin, den PFAD zu ändern, sondern den fehlerhaften zu entfernen oder zu beheben/usr/local/bin/ld
./usr/local
which ld
kommt nur zurück/usr/bin/ld
...Im Gegensatz zu den oben genannten komplizierten Gründen handelte es sich in meinem Fall lediglich um den Fall, dass ich nicht
g++
installiert hatte. Seltsamerweise war die Fehlermeldung dieselbe wie vom OP beschrieben, d. HWie auch immer, ich habe das gelöst, indem ich g ++ installiert habe:
quelle
Versuchen Sie, das System zu aktualisieren, und installieren Sie die Pakete neu, die ld bereitstellen und den Compiler ( gcc ) . Rennen
prelink -au && depmod -a
. Starten Sie dann neu.Möglicherweise müssen Sie den Prelink in
/etc/systemctl
Ihrem Distros deaktivieren oder neu konfigurieren .quelle