|  | ================================ | 
|  | Frequently Asked Questions (FAQ) | 
|  | ================================ | 
|  |  | 
|  | .. contents:: | 
|  | :local: | 
|  |  | 
|  | Driver | 
|  | ====== | 
|  |  | 
|  | I run ``clang -cc1 ...`` and get weird errors about missing headers | 
|  | ------------------------------------------------------------------- | 
|  |  | 
|  | Given this source file: | 
|  |  | 
|  | .. code-block:: c | 
|  |  | 
|  | #include <stdio.h> | 
|  |  | 
|  | int main() { | 
|  | printf("Hello world\n"); | 
|  | } | 
|  |  | 
|  |  | 
|  | If you run: | 
|  |  | 
|  | .. code-block:: console | 
|  |  | 
|  | $ clang -cc1 hello.c | 
|  | hello.c:1:10: fatal error: 'stdio.h' file not found | 
|  | #include <stdio.h> | 
|  | ^ | 
|  | 1 error generated. | 
|  |  | 
|  | ``clang -cc1`` is the frontend, ``clang`` is the :doc:`driver | 
|  | <DriverInternals>`.  The driver invokes the frontend with options appropriate | 
|  | for your system.  To see these options, run: | 
|  |  | 
|  | .. code-block:: console | 
|  |  | 
|  | $ clang -### -c hello.c | 
|  |  | 
|  | Some clang command line options are driver-only options, some are frontend-only | 
|  | options.  Frontend-only options are intended to be used only by clang developers. | 
|  | Users should not run ``clang -cc1`` directly, because ``-cc1`` options are not | 
|  | guaranteed to be stable. | 
|  |  | 
|  | If you want to use a frontend-only option ("a ``-cc1`` option"), for example | 
|  | ``-ast-dump``, then you need to take the ``clang -cc1`` line generated by the | 
|  | driver and add the option you need.  Alternatively, you can run | 
|  | ``clang -Xclang <option> ...`` to force the driver pass ``<option>`` to | 
|  | ``clang -cc1``. | 
|  |  | 
|  | I get errors about some headers being missing (``stddef.h``, ``stdarg.h``) | 
|  | -------------------------------------------------------------------------- | 
|  |  | 
|  | Some header files (``stddef.h``, ``stdarg.h``, and others) are shipped with | 
|  | Clang --- these are called builtin includes.  Clang searches for them in a | 
|  | directory relative to the location of the ``clang`` binary.  If you moved the | 
|  | ``clang`` binary, you need to move the builtin headers, too. | 
|  |  | 
|  | More information can be found in the :ref:`libtooling_builtin_includes` | 
|  | section. | 
|  |  |