macports gcc select Fehler beim Ausführen von i686-apple-darwin11-llvm-gcc-4.2


13

Ich arbeite an OS X 10.7 (Lion). Ich habe gcc 4.7 von macports installiert:

sudo port install gcc47

Es scheint richtig zu funktionieren:

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

Jetzt versuche ich, den Standard-Compiler mithilfe der Portauswahl zu ändern:

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

Es kopiert gcc binary nach / opt / local / bin / gcc, was richtig funktioniert:

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

Es ändert auch die Standardeinstellung gcc:

$ which gcc
/opt/local/bin/gcc

Das Ausführen dieser Standardeinstellung funktioniert jedoch nicht:

$ 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

Diese Binärdatei "i686-apple-darwin11-llvm-gcc-4.2" ist die von Apple bereitgestellte gcc-Version. Ich weiß nicht, warum es versucht, es in / opt / local / bin zu suchen, oder warum es überhaupt versucht, es auszuführen. Wenn ich einen Symlink erstelle, ruft er einfach diese Binärdatei auf, was ich nicht will:

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

Wie kann man das Problem lösen, damit gcc richtig funktioniert, indem man einfach "gcc" aufruft? Soweit ich weiß, gab es das Tool gcc_select in älteren OS X-Versionen, aber auf meinem System ist es nicht verfügbar.

Antworten:


17

Höchstwahrscheinlich liegt es daran, dass Bash gccgehasht hat.

Lauf

$ hash

um zu sehen, welche Befehle gehasht werden. Wenn / usr / bin / gcc in der Liste angezeigt wird, führen Sie es aus

$ hash gcc

zum Aufwärmen gcc. Danach sollten Sie / opt / local / bin / gcc sehen, wenn Sie ausgeführt werden hash, und wenn Sie ausgeführt werden , gccsollte die macports-Version ausgeführt werden - vorausgesetzt natürlich, Sie haben sie ausgewählt.

/ B2S

Bearbeiten: Führen Sie für zsh-Benutzer den Befehl aus, $ rehashum den Hash in seiner Gesamtheit zu aktualisieren.


1
Nun, ich wusste nicht einmal, dass es diesen Mechanismus gibt. Vielen Dank!
Mariusz Pluciński

0

Ich habe das gleiche Problem, und dies ist nicht die richtige Lösung - ich hoffe, dass sich jemand bei einem mischt. Rufen Sie es vorerst direkt an:

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

Hoffe das hilft bis eine dauerhafte Lösung gefunden ist

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.