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 j'obtienne 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 sais pas pourquoi cette erreur est levée. Je n'ai pas trouvé de réponse satisfaisante à cela sur le forum. Quelqu'un pourrait-il m'aider? Merci
Réponses:
Il semble que vous ayez une version non standard de l'éditeur
ld
de liens GNU dans votre/usr/local/bin
répertoire (éventuellement installé à partir de la source), et votre variable d'environnement PATH est définie de telle sorte que le système trouve cette version avant la version 'système' (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 effectue une recherche/usr/bin
avant/usr/local/bin
Si vous souhaitez corriger définitivement votre variable PATH, vous devrez 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
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) souhaitez que vous utilisiez des versions d'outils de
/usr/local
- si tel est le cas, alors vous devrez découvrir pourquoild
il n'y a apparemment pas de compatibilité avec le reste de la chaîne de construction et corriger - s'il s'agit d'un système professionnel ou scolaire, contactez votre administrateur système ou le service informatique.la source
/usr/local/bin
est en avance sur/usr/bin
enPATH
pour une bonne raison: il n'y a pas de point d'avoir un programme installé localement si la version de la distribution a la priorité. Bon travail pour repérer le problème, mais la résolution recommandée n'est pas de changer le CHEMIN mais de supprimer ou de réparer ce cassé/usr/local/bin/ld
./usr/local
which ld
revient seulement/usr/bin/ld
….Contrairement aux raisons compliquées évoquées ci-dessus, dans mon cas, il s'agissait simplement de ne pas avoir
g++
installé. Curieusement, le message d'erreur était le même que celui décrit par l'OP, c'est-à-direQuoi qu'il en soit, j'ai résolu cela en installant g ++:
la source
Essayez de mettre à jour le système, réinstallez les packages fournissant ld et le compilateur ( gcc ). Courez
prelink -au && depmod -a
. Redémarrez ensuite.Vous devrez peut-être désactiver ou reconfigurer le lien préalable dans
/etc/systemctl
ou à l'endroit où vos distributions le configurent.la source