diff options
Diffstat (limited to 'docs/FAQ.rst')
-rw-r--r-- | docs/FAQ.rst | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/docs/FAQ.rst b/docs/FAQ.rst new file mode 100644 index 0000000..4c4f8a8 --- /dev/null +++ b/docs/FAQ.rst @@ -0,0 +1,64 @@ +================================ +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. + |