मैं ओएस एक्स 10.7 (लायन) पर काम कर रहा हूं। मैंने macports से gcc 4.7 स्थापित किया है:
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 बाइनरी को / ऑप्ट / लोकल / बिन / 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" मूल Apple का प्रदान किया गया gcc संस्करण है; मुझे नहीं पता कि यह इस पर / ऑप्ट / स्थानीय / बिन में देखने की कोशिश क्यों करता है, या यहां तक कि यह इसे चलाने की कोशिश क्यों करता है। यदि मैं सिमलिंक बनाता हूं, तो यह बस इस बाइनरी को कॉल करता है, जो कि मैं नहीं चाहता:
$ 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)
इसे कैसे हल करें, जीसीसी को ठीक से काम करने के लिए, केवल "जीसीसी" कहकर? जहाँ तक मुझे पता है, पुराने OS X में gcc_select टूल था, लेकिन मेरे सिस्टम में यह नहीं है।