Compilation of C++ in Terminal

Discussion in 'Mac Programming' started by Soulstorm, May 9, 2005.

  1. macrumors 68000


    Feb 1, 2005
    How Do I compile simple .cpp files with the terminal? I know I can use xCode for this, but I want to do it with the terminal.

    I used "gcc <<filepath>>" but it shows errors of undefined symbols! Anyway, can you tell me how can I do it?
  2. macrumors 6502

    Oct 27, 2002
    Los Angeles, California
    try using:

    g++ filename
    this will use the C++ compiler for GCC which should make your code compile correctly. I thought gcc would do the same thing, but it might cause some problems, so try the g++ command.

    Hope that helps :)
  3. macrumors member

    Jul 16, 2002
  4. thread starter macrumors 68000


    Feb 1, 2005
    Indeed it helped. Now it compiles correcty. How could I have imagined to use g++ instead of gcc?? Where does apple say something like that?

    And why gcc doesn't work?
  5. macrumors 68020


    Jun 18, 2003
    First, Apple has nothing to do with it; gcc/g++ are GNU open source projects which Apple has leveraged. You might notice the similarity between cc <-> gcc, and c++ <-> g++. A "C" compiler and a "C++" compiler.
  6. macrumors 6502

    May 12, 2003
    gcc is the C compiler. g++ is the C++ compiler.

    C++ has features that C does not. Consequently, the C compiler won't understand C++-specific code.
  7. macrumors 68030


    Nov 7, 2003
    To add to whatever everyone said, C is a subset of C++ therefore a C compiler would not be able to parse C++.
  8. macrumors member

    Jan 17, 2004
    More technically isn't C++ a superset of C? (since C came first).
  9. thread starter macrumors 68000


    Feb 1, 2005
    I just thought gcc was the c++ compiler, not the plain c.
  10. macrumors 68030


    Nov 7, 2003
    I guess you are right.
  11. macrumors G4

    May 10, 2004
    If you have undefined symbols, is because you are missing some libraries in the command that you must specify with the -l options (you may also have to specify in which directories to look for with -L options).

    If this is someone else's program, there's probably a makefile to execute with 'make'.

    If this is some open source file there might be a 'configure' script to create makefiles/set up toptions according to the platform. Just executing 'configure' without options might work. (Always look for a README or INSTALL file with explanations, BTW).
  12. macrumors G4

    May 10, 2004
    Both gcc and g++ are C/C++ compilers.

    gcc assumes preprocessed (.i) files are C and assumes C style linking.
    g++ assumes preprocessed (.i) files are C++ and assumes C++ style linking.
  13. macrumors 6502

    May 12, 2003
    Nope; by default, gcc parses files as C files.

    In reality, I believe 'g++' is effectively the same as 'gcc -x c++'. In other words, it's gcc in "C++ mode."
  14. macrumors 68020


    Apr 5, 2004
    Huntsville, AL
    This isn't exactly true.

  15. macrumors 603


    Oct 16, 2003
    From man gcc/g++:

    Compiling C++ Programs

    C++ source files conventionally use one of the suffixes .C, .cc, .cpp,
    .c++, .cp, or .cxx; preprocessed C++ files use the suffix .ii. GCC
    recognizes files with these names and compiles them as C++ programs
    even if you call the compiler the same way as for compiling C programs
    (usually with the name gcc).

    However, C++ programs often require class libraries as well as a com-
    piler that understands the C++ language---and under some circumstances,
    you might want to compile programs from standard input, or otherwise
    without a suffix that flags them as C++ programs. g++ is a program
    that calls GCC with the default language set to C++, and automatically
    specifies linking against the C++ library. On many systems, g++ is
    also installed with the name c++.
  16. macrumors 6502

    May 12, 2003
    Yeah, I know. Read my comment right above yours. I thought it would be less confusing for a newbie to think of them as separate.

Share This Page