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ó.