macports gcc pilih kesalahan mencoba exec i686-apple-darwin11-llvm-gcc-4.2

13

Saya sedang mengerjakan OS X 10.7 (Lion). Saya telah menginstal gcc 4.7 dari macports:

sudo port install gcc47

Tampaknya berfungsi dengan baik:

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

Sekarang, saya mencoba mengubah kompiler default dengan menggunakan port select:

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

Ini menyalin binary gcc ke / opt / local / bin / gcc, yang berfungsi dengan baik:

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

Itu juga mengubah gcc default:

$ which gcc
/opt/local/bin/gcc

Tetapi menjalankan default ini tidak berfungsi:

$ 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

Biner ini "i686-apple-darwin11-llvm-gcc-4.2" adalah versi gcc asli yang disediakan Apple; Saya tidak tahu mengapa ia mencoba melihatnya di / opt / local / bin, atau bahkan mengapa ia mencoba menjalankannya sama sekali. Jika saya membuat symlink, itu hanya memanggil biner ini, yang bukan yang saya inginkan:

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

Bagaimana mengatasinya, untuk membuat gcc berfungsi dengan baik, hanya dengan memanggil "gcc"? Sejauh yang saya tahu, ada alat gcc_select di OS X yang lebih lama, tetapi sistem saya tidak memilikinya.

Mariusz Pluciński
sumber

Jawaban:

17

Kemungkinan besar itu karena bash gcchash.

Lari

$ hash

untuk melihat perintah mana yang di-hash. Jika / usr / bin / gcc muncul di daftar, jalankan

$ hash gcc

untuk mengulangi gcc. Setelah itu Anda akan melihat / opt / local / bin / gcc jika Anda menjalankan hash, dan menjalankan gccharus menjalankan versi macports - menyediakan tentu saja bahwa Anda telah memilihnya.

/ B2S

Sunting: Untuk pengguna zsh, jalankan $ rehashuntuk menyegarkan hash secara keseluruhan.

Born2Smile
sumber
1
Yah, saya bahkan tidak tahu tentang keberadaan mekanisme itu. Terima kasih!
Mariusz Pluciński
0

Saya memiliki masalah yang sama, dan ini bukan solusi yang tepat - saya berharap seseorang akan berpadu dengan satu. Untuk saat ini, hubungi langsung:

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

Harapan itu membantu sampai solusi permanen ditemukan

suatu hari nanti akan membuat
sumber