Introduction

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.

Remarks

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. |

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. |