macports gcc seleziona errore nel tentativo di eseguire i686-apple-darwin11-llvm-gcc-4.2


13

Sto lavorando su OS X 10.7 (Lion). Ho installato gcc 4.7 da macports:

sudo port install gcc47

Sembra funzionare correttamente:

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

Ora sto provando a cambiare il compilatore predefinito usando port select:

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

Copia gcc binary in / opt / local / bin / gcc, che funziona correttamente:

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

Cambia anche gcc predefinito:

$ which gcc
/opt/local/bin/gcc

Ma eseguire questo predefinito non funziona:

$ 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

Questo binario "i686-apple-darwin11-llvm-gcc-4.2" è la versione gcc originale fornita da Apple; Non so perché tenti di cercarlo in / opt / local / bin, o anche perché tenti di eseguirlo. Se creo symlink, chiama semplicemente questo binario, che non è quello che voglio:

$ 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)

Come risolverlo, per far funzionare correttamente gcc, semplicemente chiamando "gcc"? Per quanto ne so, c'era lo strumento gcc_select nel vecchio OS X, ma il mio sistema non ce l'ha.

Risposte:


17

Molto probabilmente è perché Bash ha l' gcchash.

Correre

$ hash

per vedere quali comandi sono sottoposti a hash. Se / usr / bin / gcc appare nell'elenco, esegui

$ hash gcc

rehash gcc. Successivamente dovresti vedere / opt / local / bin / gcc se corri hash, e in esecuzione gccdovresti eseguire la versione di macports - purché ovviamente tu l'abbia selezionata.

/ B2S

Modifica: per gli utenti zsh, esegui $ rehashper aggiornare l'hash nella sua interezza.


1
Bene, non sapevo nemmeno dell'esistenza di quel meccanismo. Grazie!
Mariusz Pluciński,

0

Ho lo stesso problema, e questa non è la soluzione corretta - spero che qualcuno entrerà in contatto con uno. Per il momento, chiamalo direttamente:

$ 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) 

Spero che aiuti fino a trovare una soluzione permanente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.