web-dev-qa-db-fra.com

configure: erreur: le compilateur C ne peut pas créer d'exécutable

J'essayais d'installer rvm en utilisant \curl -L https://get.rvm.io | bash -s stable --Ruby --autolibs=enable --auto-dotfiles. Cela a bien fonctionné jusqu'à ce que je reçois une erreur de configuration:

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.

Voici le contenu du fichier journal mentionné:

[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

J'ai ensuite essayé un programme C "hello world" et j'ai obtenu l'erreur suivante lors de la compilation:

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

Je ne suis pas sûr de savoir pourquoi cette erreur est générée. Je n'ai pas pu trouver de réponse satisfaisante à cette question sur le forum. Quelqu'un pourrait-il s'il vous plaît aider. Merci

12
naka

Il semble que vous ayez une version non standard du lieur GNU _ ld_ dans votre répertoire /usr/local/bin (éventuellement installé à partir du code source) et que votre variable d'environnement PATH est définie de sorte que le système trouve cette version avant le système. 'version (qui devrait être à /usr/bin/ld). Si vous souhaitez créer à l'aide des versions système standard des outils de génération, vous devrez ajuster votre variable d'environnement PATH afin qu'elle recherche /usr/bin avant /usr/local/bin

Si vous souhaitez corriger définitivement votre variable PATH, vous devez savoir où vous l'avez définie à l'origine - probablement dans votre fichier ~/.bashrc, mais d'autres emplacements sont possibles. Alternativement, si vous avez juste besoin d’un correctif temporaire pour cette version, vous pouvez essayer

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

dans le terminal avant d'exécuter le ./configure

Cependant, il y a parfois de bonnes raisons pour lesquelles vous (ou votre administrateur système) pouvez souhaiter que vous utilisiez des versions des outils de /usr/local - si c'est le cas, vous devrez alors savoir pourquoi le ldn'est apparemment pas compatible avec le reste de la chaîne de construction. et résolvez-le - s'il s'agit d'un système professionnel ou scolaire, contactez votre administrateur système ou votre service informatique.

12
steeldriver

Contrairement aux raisons compliquées données ci-dessus, dans mon cas, il s’agissait simplement de ne pas avoir installé g++. Bizarrement, le message d'erreur était le même que celui décrit par l'OP c.-à-d.

configure: error: C compiler cannot create executables

Quoi qu'il en soit, j'ai résolu ce problème en installant g ++:

Sudo apt-get install g++
8
rahul1210

Essayez de mettre à jour le système, réinstallez les paquetages fournissant ld et le compilateur (gcc). Exécutez prelink -au && depmod -a. Puis redémarrez.

Vous devrez peut-être désactiver ou reconfigurer la liaison préliminaire dans /etc/systemctl ou à tout autre endroit dans lequel votre distribution l’a configurée.

0
user599717