
Как разумно заставить два компилятора искать свои #include
заголовки?
Работает на стандартной системе Linux 86x64, мой стандартный компилятор gcc
(в настоящее время v9.3). Теперь я хотел бы скомпилировать некоторые вещи tcc
и установить его в локальном каталоге пользователей.
Как я могу сказать, tcc
где искать тропу #include
? Я ожидаю, что она будет в
/home/user/lib/tcc/v0.9/include
или/home/user/lib/tcc/v0.9/lib/tcc/include
решение1
Как я могу указать tcc, где искать
#include
путь?
Используйте эту -I
опцию, как и в случае с gcc или clang:
От man tcc
:
-Idir Specify an additional include path. Include paths are searched in the order they are specified. System include paths are always searched after. The default system include paths are: /usr/local/include, /usr/include and PREFIX/lib/tcc/include. (PREFIX is usually /usr or /usr/local).
Я не думаю, что tcc делает какое-либо различие между формами the <...>
и "..."
include.
Также, как отмечено в man tcc
, вы можете использовать tcc -vv
для отображения путей по умолчанию. В моей системе это показывает:
tcc version 0.9.27 (x86_64 Linux)
install: /usr/lib/x86_64-linux-gnu/tcc
include:
/usr/lib/x86_64-linux-gnu/tcc/include
/usr/local/include/x86_64-linux-gnu
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
libraries:
/usr/lib/x86_64-linux-gnu
/usr/lib
/lib/x86_64-linux-gnu
/lib
/usr/local/lib/x86_64-linux-gnu
/usr/local/lib
libtcc1:
/usr/lib/x86_64-linux-gnu/tcc/libtcc1.a
crt:
/usr/lib/x86_64-linux-gnu
elfinterp:
/lib64/ld-linux-x86-64.so.2