Install the Command Line C Compilers in OS X Lion

Out of the box, OS X Lion doesn’t have the command line C compilers. Plus, Apple has once again changed the way you install those compilers in /usr/bin. Here’s how to do it with the latest Xcode and Lion.

Back in August, right after OS X 10.7, Lion, shipped, I wrote about how a new installation does not have the C compilers in the expected place, /usr/bin. This article, “OS X Lion for UNIX Geeks: Installing the C Compilers,” provided all the background.

Recently, professor Ulf von Barth of Lund University in Sweden alerted me to the fact that the mechanism has changed yet again. In the article linked above, I explained that all you had to do was download and install Apple’s Xcode IDE, and everything would be as expected. Now, you have to do a little more. But before I proceed, you should go back and read that article for reference on the C compilers, gcc, llvm, and all that jazz.

Motivation

There may be good reasons not to have a C compiler sitting around an average user’s Mac, ready to stir up trouble if accessed by malware. Thats why it’s not in the Mac by default. On the other hand, you may be taking a C class and want to use a C compiler (gcc now points to llvm) from the command line. Or you may be an administrator, and you want the C compiler to be available in a lab setting. Or you’re a researcher, and you don’t use Xcode for scientific computing. Or it may just be for show. Some day, an IT admin will come up to you and question you about the Mac, and you proudly announce that it’s based on (BSD) UNIX. This Linux guru will open the command line, type “cd /usr/bin; ./gcc -v” and then snort. “Aha. Nothing there. It’s not real UNIX! ” Not good.

gcc -1

Uh-oh. Not there.

For whatever reason you may have, here’s what you need to do nowadays. Note that, unlike before, when everything was free, you will need to be a registered Mac developer.

Procedure

1. Download Xcode, now at version 4.3.2, just as before, from the Mac App Store. Finder -> Apple -> App Store…  It’s always been free and still is.

2. Launch the Xcode.app that was downloaded to /Applications.

3. If you stop there, you’ll find that, unlike before, the command line compilers are not installed by default. You can go hunting for them, and you’ll it all in:

/Applications/Xcode.app/Contents/Developer/usr/bin

gcc -2

Oops. gcc/llvm now buried /Applications for use by Xcode

Phew! That won’t do you any good unless you intend to use Xcode exclusively. Very likely, all your conventional Make scripts won’t know where to find the C compilers (and linker and assembler) now, and you wouldn’t want to modify them anyway. So setting up links to the new location would be messy and likely will not work, creating new headaches. What you need is everything back in /usr/bin like before.

4. After launching Xcode, go to Preferences and select the Downloads pane, then Components. There, in the list of candidate items will be the Command line tools. Click “Install.”

gcc -3

Xcode’s downloads

5. You’ll be prompted for your developer credentials…

gcc -5

…then you’ll see the classic progress bar. When that’s done, the C compilers will all be in /usr/bin, as desired. To prove that all’s well, open a terminal window, cd to /usr bin, and take a look. Voila.

gcc -4

All is well again in /usr/bin

It’s a shame we have to go through all that these days, but I can see how Apple feels that the majority of users don’t need these tools, and those who do will find out how to get them. I suppose you could call that a subordinate claws.

_________

My thanks to Dr. Ulf von Barth of Lund University in Sweden and Dr. Gaurav Khanna, Physics Dept., the University of Massachussetts for their assistance with this article.