GNU Compiler Collection
gcc and g++ are both part of the GNU Compiler Collection. g++ is a version of GCC with pre-defined options for C++ code.
You install them, and everything necessary for devs, using:
$ sudo apt-get install build-essential # gcc, cmake...
$ sudo apt-get install manpages-dev # man pages for devs
β‘οΈ We usually use CMake and Makefiles to automate the compilation.
GCC/G++ Usage
Basic usage
Compile and generate an executable a.out.
$ gcc file.c
$ g++ file.cpp
Common usage
Partially compile files that depend on each other (#include), then assemble them in an executable a.out.
$ gcc -c file1.c # generate "file1.o" object file
$ gcc -c file2.c # generate "file2.o" object file
$ gcc file1.o file2.o # generate "a.out"
β‘οΈ For g++: replace gcc with g++ and .c with .cpp.
π One-line command: gcc -c *.c && gcc *.o && rm *.o
Other options
Commonly used options:
-o: set the executable name (default=a.out)-std=value: specify a standard such asc99orc++11-I/path/to/xxx: include a folder with header files-g: add information for debuggers (ex: GDB)
Common compliance/warnings options:
-Wall: enable compiler warnings-Wextra: enable additional compiler warnings-Werror: mark compiler warnings as compilation errors-Wpedantic: enable strict ISO conformance-ansi: C89 compliance (rarely used)
Less commonly used options:
-E: generate intermediate files-S: generate assembly code
π» To-do π»
Stuff that I found, but never read/used yet.
-llib-L/path/to/lib-Z ...-MM(deps)