So you have some scripts that use “cpp”, “c++” or “clang” and etc but you cannot find them in your path? Not to worry, read on…
With OS X Lion and sandboxing, you can find your c++ compiler using the “find” command:
find /Applications/Xcode.app/ -name “c++”
This will return something like:
find /Applications/Xcode.app/ -name “c++”
/Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
/Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++
The one in the “bin” folder is the one we are looking for so the folder that contains our toolchain is here:
/Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/
Navigate to that folder to do some inspection:
cd /Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/
ls -la c++
lrwxr-xr-x 1 root wheel 7 19 Jun 22:41 c++ -> clang++
ls -la clang++
lrwxr-xr-x 1 root wheel 5 19 Jun 22:41 clang++ -> clang
ls -la clang
-rwxr-xr-x 1 root wheel 22985632 19 Jun 22:41 clang
You can see right away that c++ is a symlink to clang++ and clang++ is a symlink to clang. What a mess!
Now let’s find “cpp”:
ls -la cpp
ls: cpp: No such file or directory
Oopsy daisy, it’s not there. That’s one of the issue a lot of developers will be facing. So let’s remedy this by first creating cpp as an alias. We want this alias to be permanent between Terminal sessions so we put it in our bash_profile and we also have to make sure the toolchain bin url highlighted above is in our path:
vim ~/.bash_profile
And then change the content of your bash profile so that your path includes:
/Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/
and also create an alias for cpp to point to clang. The contents of my ~/.bash_profile now looks like this:
export PATH=~/bin/:/Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/:$PATH
alias cpp=’clang’
Once you are done, press Escape in vim and then type :wq and press enter. That will “write” and then “quit”.
After you are done, close Terminal and open it again and type cpp:
cpp
clang: error: no input files
Lovely, it’s working. Any questions? Leave them down below 🙂