Hi all: quick question: I'm in a situation where it would be useful to generate my C++ executable using only 'gcc' (without g++). Reason for this is that I have to submit the code to an automatic submission server which doesn't recognize the 'g++' (or 'c++', for that matter) command.
In my experiments, while I'm compiling gcc works well. Problem is, when I try to link the generated object files it gets messed up. Now, based on what I understood from the gcc man page (I may be way off, so tell me if I am), g++ is basically gcc, but it links the C++ library.
If this is true, how can I (if possible) explicitly link the C++ library without using the g++ (or c++) command?
EDIT: I'm adding the makefile to better illustrate the problem:
COMPILER = gcc CFLAGS = -Wall -g -x c++ # MODULE COMPILATION model: modules/model.h modules/sources/model.cpp $(COMPILER) $(CFLAGS) -c modules/sources/model.cpp -o obj/model.o algorithms: modules/algorithms.h modules/sources/algorithms.cpp $(COMPILER) $(CFLAGS) -c modules/sources/algorithms.cpp -o obj/algorithms.o io: modules/io.h modules/sources/io.cpp $(COMPILER) $(CFLAGS) -c modules/sources/io.cpp -o obj/io.o stopwatch: modules/stopwatch.h modules/sources/stopwatch.cpp $(COMPILER) $(CFLAGS) -c modules/sources/stopwatch.cpp -o obj/stopwatch.o # EXECUTABLE GENERATION exe: model algorithms io stopwatch $(COMPILER) $(CFLAGS) main.cpp obj/model.o obj/algorithms.o obj/io.o obj/stopwatch.o -o bin/process # DEFAULT TEST CASE run: exe ./bin/process -i data/nasa_small.log -a data/nasa_small.access -s data/nasa_small.stack # CLEANING ROUTINE clean: rm -f obj/*
gcc is used to compile C program while g++ is used to compile C++ program. Since, a C program can also be compile complied through g++, because it is the extended or we can say advance compiler for C programming language.
GCC, formerly for "GNU C Compiler", has grown over times to support many languages such as C ( gcc ), C++ ( g++ ), Objective-C, Objective-C++, Java ( gcj ), Fortran ( gfortran ), Ada ( gnat ), Go ( gccgo ), OpenMP, Cilk Plus, and OpenAcc. It is now referred to as "GNU Compiler Collection".
g++ also has additional macros. So you can compile C code with g++ and in fact mix both C and C++ code. Finally, the executable size may also changes based on the compiler.
You can link the standard c++ library with the -l
flag to gcc:
gcc cplusplus.o -lstdc++ -o myexe
If you run g++ with the "-v" option, it will show what command and options it uses. You should be able to deduce the correct gcc command line from there.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With