# LLVM: `llvmgcc` tool

### NAME

`llvmgcc`

### SYNOPSIS

`llvmgcc [options] filename`

### DESCRIPTION

The `llvmgcc` command is the LLVM C front end. It is a modified version of the GNU Compiler Collection (GCC) that takes C programs and compiles them into LLVM bytecode or assembly language, depending upon the options.

The `llvmgcc` program uses the `gccas` and `gccld` programs to do the work of creating complete programs.

Being derived from GCC, llvmgcc has many of GCC's features and accepts most of GCC's options. It handles a number of GCC's extensions to the C programming language.

Below you will find several commonly used options:

### OPTIONS

- -S
  Do not generate an LLVM bytecode file. Rather, compile the source file into an LLVM assembly language file.

- -c
  Do not generate a linked bytecode executable. Rather, compile the source file into an LLVM bytecode file. This bytecode file can then be linked with other bytecode files later to generate a full LLVM executable.

- -o filename
  Specify the output file to be filename.

- -I directory
  Add a directory to the header file search path. This option can be repeated.

- -L directory
  Add directory to the library search path. This option can be repeated.

- -lname
  Link in the library libname.[bc | a | so]. This library should be a bytecode library.

- -Wl,option
  Pass option to the linker program, `gccld`.

### EXIT STATUS

If `llvmgcc` succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non-zero value.

### SEE ALSO

`llvmg++`, `gccas`, `gccld`

Maintained by the LLVM Team.