# LLVM: `llvmg++` tool

### NAME

`llvmg++`

### SYNOPSIS

`llvmg++ [options] filename`

### DESCRIPTION

The `llvmg++` command is the LLVM C++ front end. It is a modified version of g++ that takes C++ programs and compiles them into LLVM bytecode or assembly language, depending upon the options.

Unless the `-S` option is specified, `llvmg++` will use the `gccas` program to perform some optimizations and create an LLVM bytecode file. Unless the `-c` option is specified, `llvmg++` will also use the `gccld` program to perform further optimizations and link the resulting bytecode file(s) with support libraries to create an executable program.

Being derived from the GNU Compiler Collection, `llvmg++` has many of g++'s features and accepts most of g++'s options. It handles a number of g++'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 executable. Rather, compile the source file into an LLVM bytecode file. This bytecode file can then be linked with other bytecode files later on 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 (usually gccld).

### EXIT STATUS

If `llvmg++` 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.