View Full Version : Compilation of C++ in Terminal
Soulstorm
May 9, 2005, 12:48 PM
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?
pepeleuepe
May 9, 2005, 01:01 PM
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 :)
evilpenguin21
May 9, 2005, 01:03 PM
^Edit: what he said^
Soulstorm
May 10, 2005, 05:52 PM
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 :)
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?
daveL
May 10, 2005, 06:09 PM
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?
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.
therevolution
May 10, 2005, 06:18 PM
And why gcc doesn't work?
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.
superbovine
May 10, 2005, 06:44 PM
And why gcc doesn't work?
To add to whatever everyone said, C is a subset of C++ therefore a C compiler would not be able to parse C++.
NuPowerbook
May 11, 2005, 12:00 AM
To add to whatever everyone said, C is a subset of C++ therefore a C compiler would not be able to parse C++.
More technically isn't C++ a superset of C? (since C came first).
Soulstorm
May 11, 2005, 02:33 AM
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.
I just thought gcc was the c++ compiler, not the plain c.
superbovine
May 11, 2005, 02:51 AM
More technically isn't C++ a superset of C? (since C came first).
I guess you are right.
cube
May 11, 2005, 03:04 AM
I used "gcc <<filepath>>" but it shows errors of undefined symbols! Anyway, can you tell me how can I do it?
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).
cube
May 11, 2005, 03:09 AM
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.
therevolution
May 12, 2005, 09:59 AM
I just thought gcc was the c++ compiler, not the plain c.
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."
ChrisBrightwell
May 12, 2005, 10:48 AM
gcc is the C compiler. g++ is the C++ compiler.
This isn't exactly true.
http://en.wikipedia.org/wiki/Gcc
The GNU Compiler Collection (usually shortened to GCC) is a set of programming language compilers produced by the GNU Project. It is free software distributed by the Free Software Foundation (FSF) under the GNU GPL, and is a key component of the GNU toolchain. It is the standard compiler for the open source Unix-like operating systems, and certain proprietary operating systems derived therefrom such as Mac OS X.
Originally named the GNU C Compiler, because it only handled the C programming language, GCC was later extended to compile C++, Fortran, Ada, and others.
HTH.
gekko513
May 12, 2005, 11:10 AM
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++.
therevolution
May 13, 2005, 10:33 AM
This isn't exactly true.
http://en.wikipedia.org/wiki/Gcc
HTH.
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.
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.