macports gcc chọn lỗi cố gắng thực thi i686-apple-darwin11-llvm-gcc-4.2


13

Tôi đang làm việc trên OS X 10.7 (Lion). Tôi đã cài đặt gcc 4.7 từ macports:

sudo port install gcc47

Nó dường như đang hoạt động đúng:

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

Bây giờ, tôi đang cố gắng thay đổi trình biên dịch mặc định bằng cách sử dụng cổng chọn:

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

Nó sao chép gcc nhị phân sang / opt / local / bin / gcc, hoạt động đúng:

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

Nó cũng thay đổi gcc mặc định:

$ which gcc
/opt/local/bin/gcc

Nhưng chạy cái mặc định này không hoạt động:

$ 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

Bản nhị phân "i686-apple-darwin11-llvm-gcc-4.2" này là phiên bản gcc ban đầu do Apple cung cấp; Tôi không biết tại sao nó cố gắng nhìn vào nó trong / opt / local / bin, hoặc thậm chí tại sao nó cố gắng chạy nó cả. Nếu tôi tạo symlink, nó chỉ đơn giản gọi đây là nhị phân, đây không phải là điều tôi muốn:

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

Làm thế nào để giải quyết nó, để làm cho gcc hoạt động đúng, chỉ cần gọi "gcc"? Theo tôi biết, đã có công cụ gcc_select trong OS X cũ hơn, nhưng hệ thống của tôi không có nó.

Câu trả lời:


17

Nhiều khả năng đó là do bash đã gccbăm.

Chạy

$ hash

để xem những lệnh nào được băm. Nếu / usr / bin / gcc xuất hiện trong danh sách, hãy chạy

$ hash gcc

để luyện tập lại gcc. Sau đó, bạn sẽ thấy / opt / local / bin / gcc nếu bạn chạy hashvà chạy gccsẽ chạy phiên bản macports - tất nhiên là bạn đã chọn nó.

/ B2S

Chỉnh sửa: Đối với người dùng zsh, hãy chạy $ rehashđể làm mới toàn bộ hàm băm.


1
Chà, tôi thậm chí còn không biết về sự tồn tại của cơ chế đó. Cảm ơn bạn!
Mariusz Pluciński

0

Tôi có cùng một vấn đề, và đây không phải là giải pháp chính xác - tôi hy vọng ai đó sẽ hòa nhập với một người. Hiện tại, hãy gọi trực tiếp:

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

Hy vọng rằng sẽ giúp cho đến khi một giải pháp lâu dài được tìm thấy

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.