erreur de sélection de macports gcc en essayant d'exécuter i686-apple-darwin11-llvm-gcc-4.2


13

Je travaille sur OS X 10.7 (Lion). J'ai installé gcc 4.7 depuis macports:

sudo port install gcc47

Il semble fonctionner correctement:

$ /opt/local/bin/gcc-mp-4.7 -v
(...)
gcc version 4.7.0 (GCC) 

Maintenant, j'essaie de changer le compilateur par défaut en utilisant la sélection de port:

$ sudo port select gcc mp-gcc47
Selecting 'mp-gcc47' for 'gcc' succeeded. 'mp-gcc47' is now active.

Il copie le fichier binaire gcc dans / opt / local / bin / gcc, ce qui fonctionne correctement:

$ /opt/local/bin/gcc -v
(...)
gcc version 4.7.0 (GCC) 

Il modifie également gcc par défaut:

$ which gcc
/opt/local/bin/gcc

Mais exécuter celui par défaut ne fonctionne pas:

$ gcc -v
gcc-mp-4.7: error trying to exec '/opt/local/bin/i686-apple-darwin11-llvm-gcc-4.2': execvp: No such file or directory

Ce binaire "i686-apple-darwin11-llvm-gcc-4.2" est la version gcc fournie par Apple d'origine; Je ne sais pas pourquoi il essaie de le regarder dans / opt / local / bin, ni même pourquoi il essaie de l'exécuter. Si je crée un lien symbolique, il appelle simplement ce binaire, ce qui n'est pas ce que je veux:

$ sudo ln -s /usr/bin/i686-apple-darwin11-llvm-gcc-4.2 /opt/local/bin
$ gcc -v
(...)
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)

Comment le résoudre, pour faire fonctionner correctement gcc, en appelant simplement "gcc"? Autant que je sache, il y avait l'outil gcc_select dans les anciens OS X, mais mon système ne l'a pas.

Réponses:


17

C'est très probablement parce que bash a gcchaché.

Courir

$ hash

pour voir quelles commandes sont hachées. Si / usr / bin / gcc apparaît dans la liste, exécutez

$ hash gcc

à ressasser gcc. Ensuite, vous devriez voir / opt / local / bin / gcc si vous exécutez hash, et l'exécution gccdevrait exécuter la version macports - à condition bien sûr que vous l'ayez sélectionnée.

/ B2S

Modifier: pour les utilisateurs de zsh, exécutez $ rehashpour actualiser le hachage dans son intégralité.


1
Eh bien, je ne connaissais même pas l'existence de ce mécanisme. Je vous remercie!
Mariusz Pluciński

0

J'ai le même problème, et ce n'est pas la bonne solution - j'espère que quelqu'un va sonner avec un. Pour l'instant, appelez-le directement:

$ gcc-mp-4.7 -v
Using built-in specs.
COLLECT_GCC=gcc-mp-4.7
COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin11/4.7.0/lto-wrapper
Target: x86_64-apple-darwin11
    Configured with: ../gcc-4.7.0/configure --prefix=/opt/local --build=x86_64-apple-darwin11 --enable-languages=c,c++,objc,obj-c++,lto,fortran,java --libdir=/opt/local/lib/gcc47 --includedir=/opt/local/include/gcc47 --infodir=/opt/local/share/info --mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-4.7 --with-libiconv-prefix=/opt/local --with-local-prefix=/opt/local --with-system-zlib --disable-nls --program-suffix=-mp-4.7 --with-gxx-include-dir=/opt/local/include/gcc47/c++/ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --with-ppl=/opt/local --with-cloog=/opt/local --enable-cloog-backend=isl --enable-stage1-checking --disable-multilib --enable-lto --with-as=/opt/local/bin/as --with-ld=/opt/local/bin/ld --with-ar=/opt/local/bin/ar --with-bugurl=https://trac.macports.org/newticket --with-pkgversion='MacPorts gcc47 4.7.0_3'
Thread model: posix
gcc version 4.7.0 (MacPorts gcc47 4.7.0_3) 

J'espère que cela vous aidera jusqu'à ce qu'une solution permanente soit trouvée

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.