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 asc99
orc++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)