ฉันกำลังทำงานบน OS X 10.7 (Lion) ฉันได้ติดตั้ง gcc 4.7 จาก macports:
sudo port install gcc47
ดูเหมือนว่าจะทำงานอย่างถูกต้อง:
$ /opt/local/bin/gcc-mp-4.7 -v
(...)
gcc version 4.7.0 (GCC)
ตอนนี้ฉันกำลังพยายามเปลี่ยนคอมไพเลอร์เริ่มต้นโดยใช้การเลือกพอร์ต:
$ sudo port select gcc mp-gcc47
Selecting 'mp-gcc47' for 'gcc' succeeded. 'mp-gcc47' is now active.
มันคัดลอก gcc ไบนารีไปยัง / opt / local / bin / gcc ซึ่งทำงานอย่างถูกต้อง:
$ /opt/local/bin/gcc -v
(...)
gcc version 4.7.0 (GCC)
นอกจากนี้ยังเปลี่ยน gcc เริ่มต้น:
$ which gcc
/opt/local/bin/gcc
แต่การเรียกใช้ค่าเริ่มต้นนี้จะไม่ทำงาน:
$ 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
ไบนารีนี้ "i686-apple-darwin11-llvm-gcc-4.2" เป็นรุ่น gcc ดั้งเดิมของ Apple ที่ให้มา; ฉันไม่รู้ว่าทำไมจึงพยายามดูใน / opt / local / bin หรือแม้แต่สาเหตุที่พยายามเรียกใช้เลย ถ้าฉันสร้าง symlink มันจะเรียกเลขฐานสองนี้ซึ่งไม่ใช่สิ่งที่ฉันต้องการ:
$ 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)
วิธีแก้ปัญหาเพื่อให้ gcc ทำงานอย่างถูกต้องเพียงแค่เรียก "gcc" เท่าที่ฉันรู้มีเครื่องมือ gcc_select ใน OS X รุ่นเก่า แต่ระบบของฉันไม่มี