The C language is traditionally a compiled language (as opposed to interpreted). The C Standard defines translation phases, and the product of applying them is a program image (or compiled program). In [tag:c11], the phases are listed in §5.1.1.2.
Filename extension | Description |
|––––|———––| | .c
| Source file. Usually contains definitions and code. | | .h
| Header file. Usually contains declarations. | | .o
| Object file. Compiled code in machine language. | | .obj
| Alternative extension for object files. | | .a
| Library file. Package of object files. | | .dll
| Dynamic-Link Library on Windows. | | .so
| Shared object (library) on many Unix-like systems. | | .dylib
| Dynamic-Link Library on OSX (Unix variant). | | .exe
, .com
| Windows executable file. Formed by linking object files and library files. In Unix-like systems, there is no special file name extension for executable file. |
POSIX c99 compiler flags | Description |
|––––|———––| | -o filename
| Output file name eg. (bin/program.exe
, program
) | | -I directory
| search for headers in direrctory
. | | -D name
| define macro name
| | -L directory
| search for libraries in directory
. | | -l name
| link library libname
. |
Compilers on POSIX platforms (Linux, mainframes, Mac) usually accept these options, even if they are not called c99
.
GCC (GNU Compiler Collection) Flags | Description |
|––––|———––| | -Wall
| Enables all warning messages that are commonly accepted to be useful. | | -Wextra
| Enables more warning messages, can be too noisy. | | -pedantic
| Force warnings where code violates the chosen standard. | | -Wconversion
| Enable warnings on implicit conversion, use with care. | | -c
| Compiles source files without linking. | | -v
| Prints compilation info. |
gcc
accepts the POSIX flags plus a lot of others.clang
, vendor specific compilers) also use the flags that are listed above.TCC (Tiny C Compiler) Flags | Description |
|––––|———––| | -Wimplicit-function-declaration
|Warn about implicit function declaration.| | -Wunsupported
| Warn about unsupported GCC features that are ignored by TCC. | | -Wwrite-strings
| Make string constants be of type const char * instead of char *. | | -Werror
| Abort compilation if warnings are issued. | | -Wall
| Activate all warnings, except -Werror
, -Wunusupported
and -Wwrite strings
. |