configure: error: C-Compiler kann keine ausführbaren Dateien erstellen

15

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

Naka
quelle
1
Ich habe diesen Fehler erhalten, als ich beim Ausführen des Skripts './configure' fälschlicherweise CXXFLAGS für CPPFLAGS angegeben habe. Die Fehlermeldung erklärt also nicht den genauen Fehler.
RajaRaviVarma

Antworten:

12

Es sieht so aus, als hätten Sie eine nicht standardmäßige Version des GNU-Linkers ldin Ihrem /usr/local/binVerzeichnis (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/binvor 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

export PATH="/usr/bin:$PATH"

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/localWenn ja, müssen Sie herausfinden, warum diese ldanscheinend 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.

Stahlfahrer
quelle
9
Normalerweise /usr/local/binist vor /usr/binin das PATHaus 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.
Gilles 'SO- hör auf böse zu sein'
@steeldriver: Wenn es dort nicht in ~ / .bashrc wäre, könnte ich einfach die Zeile "export PATH =" / usr / bin: $ PATH "" dort einfügen. Oder würde es ein Problem für andere Programme schaffen?
Naka
@Gilles Ich habe meine Antwort so bearbeitet, dass sie Ihren Kommentar widerspiegelt. @Naka Ich rate davon ab, es wird auf lange Sicht mehr Verwirrung stiften. Sie sollten Gilles 'Kommentar zur Kenntnis nehmen und herausfinden, warum Ihr Administrator den PATH eingerichtet hat, um den zu verwenden version in/usr/local
steeldriver
3
Ich habe den gleichen Fehler bekommen ... das hat bei mir nicht funktioniert ... which ldkommt nur zurück /usr/bin/ld...
Isomorphismen
9

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. H

configure: error: C compiler cannot create executables

Wie auch immer, ich habe das gelöst, indem ich g ++ installiert habe:

sudo apt-get install g++
rahul1210
quelle
0

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/systemctlIhrem Distros deaktivieren oder neu konfigurieren .

user599717
quelle