Building C++ not working in OSX 10.9

2019-01-22 14:12发布

问题:

Update:

I solved the problem in the end by reinstalling command line tools, as shown in this link. Sorry for the trouble!

Initial question

I have just upgraded to OSX Mavericks and I cannot make the compiler work anymore. I've been using gcc48 from macports with vim/sb2 and everything was working just fine. Now any library that I include gives tons of errors. I am not very experienced and I do not know what to do, or what to search for. I just want it to work like before. Here is what is says when compiling a basic "hello world" program:

In file included from /opt/local/include/gcc48/c++/bits/postypes.h:40:0,
             from /opt/local/include/gcc48/c++/iosfwd:40,
             from /opt/local/include/gcc48/c++/ios:38,
             from /opt/local/include/gcc48/c++/ostream:38,
             from /opt/local/include/gcc48/c++/iostream:39,
             from ceva.cpp:1:
/opt/local/include/gcc48/c++/cwchar:44:19: fatal error: wchar.h: No such file or directory
#include <wchar.h>

If you need any information, tell me and I will provide it to you. Thank you for your patience!

回答1:

XCode 5/Mavericks have changed the defaults for where headers are located.

On prior versions of Mac OS X / XCode you would have found headers in /usr/include.

When you built gcc on the older release it picked up the headers from that location, and looks for them there now when you try to build code.

The problem is that the files are not there; they're somewhere under /Applications/Xcode.app/Contents/Developer.

You could futz about with a spec file to get it working consistently again, but the sanest thing to do is rebuild gcc.

As has been mentioned as well, you can install the command line tools using xcode-select --install, which will reinstall the developer tools, including the headers in /usr/include.

I tend to reinstall things like gcc when I upgrade my operating system as I encounter other errors due to changes in the environment. This is just a habit I've formed. It may not be the best habit, but it's saved me pain on numerous occasions.

[added 2017] As an addendum, if you install the command line tools, then the headers will be placed in /usr/include as well. The command to install the command line tools is xcode-select --install - this will allow you to use most compilers without having to specify the location of the headers manually.



回答2:

This is how I got it working on Mac osx Mavericks:

  1. Open terminal

  2. type --> xcode-select --install

  3. A pop-up windows will apear asking you about install tools

  4. choose install tools

  5. wait install to finish



回答3:

Here is a manual method for updating XCode on OS X Mavericks:

  1. Go into the developers site http://developer.apple.com

  2. Then go to Downloads for Apple developers and there is a command line tools installer for Mavericks — here's the link (but you'll need a developers account for the link to work) http://developer.apple.com/downloads/index.action?q=xcode



回答4:

I'm using MacOs Sierra 10.12.4, got the same problem. I solved it by using:

/usr/bin/gcc