General
GCC Flags Notes
csm DEV Community
2 views
My notes on GNU C Compiler (GCC) Flags
Basic Flags
-c
It tells GCC to compile the source file into an object file (.o), but do not link it into an executable.
gcc -c main.c
This produces:
main.o
Then you can link it separately:
gcc main.o -o main
-o
It specifies the output filename.
gcc main.c -o main
We get:
main
-l
It means "link this library".
For example:
gcc main.c -lm -o main
Here:
-l -> link a library
m -> library name libm
-o main -> output executable named main
The library must be present in the standard search paths of GCC.
-I
It specifies an additional directory to search for header files.
gcc -Iinclude main.c -o main
This tells GCC:
When you see #include "something.h", also look inside the include/ directory.
-L
It specifies an additional directory to search for libraries during linking.
For example:
gcc main.c -L./lib -lmylib -o main
This means:
-L./lib -> search ./lib for libraries
-lmylib -> link libmylib
-o main -> produce main
-static
It tells the linker to create a statically linked executable.
gcc main.c -static -o main
Optimisation
-O
Sets the level of optimisation.
gcc -O2 main.c -o main
Optimisation Levels
0 -> does nothing
1 -> basic optimisation
2 -> produces small binaries
3 -> produces fast binaries (may not be small in size)
1 -> for fast compile times
2 -> for production
0 -> for debugging
Strict Rules, Warnings and Errors
Basic ones are:
-std
It specifies which C standard the compiler should follow.
gcc -std=c17 main.c -o main
-Wall
-Wextra
-Wpedantic
-Werror
Some extra ones:
-W
-Wconversion
-Wshadow
-Wcast-qual
-Wwrite-strings
Debugging Related
-g
It generates debugging information in the executable/object file.
gcc -g main.c -o main
It mainly tells GCC to include information that debuggers such as GDB can use.
Preprocessing Related
-E
It says run only the preprocessor.
gcc -E main.c
-D
It defines a macro from the commmand-line:
gcc -DTEST main.c
Here:
-D -> define macro
TEST -> name of the macro
Thats it! 😵💫
Read original: https://dev.to/csm18/gcc-flags-notes-5h51
← Previous
The malware that shows scanners a clean page
Next →
Vercel Sandbox now provides 64 GB of storage
Related
Comments0
No comments yet — be the first