Я кросс-компиляция исходного файла, который требует определенного заголовка.
Этот заголовок является частью SDK; это присутствует в моем системном корне. Полный путь к заголовку следующий:
/pathtosysroot/sysroot/usr/include/some/nasty/long/path/header.h
Даже если я вызываю gcc с флагом --sysroot=/pathtosysroot/sysroot
, мне все равно придется учитывать часть some/nasty/long/path
, чтобы правильно включить файл.
С учетом вышесказанного, существует ли в C соглашение о том, использовать ли один из двух вариантов ниже для достижения этого заголовка в моем файле .c?
1 - Укажите путь заголовка из каталога верхнего включения sysroot в #include, чтобы он находил заголовок из пути sysroot:
#include <some/nasty/long/path/header.h>
2 - Укажите полный путь в флаге включения gcc и просто #include имя файла заголовка:
gcc -I /pathtosysroot/sysroot/usr/include/some/nasty/long/path ...
А в файле:
#include <header.h>
В качестве примечания я бы предпочел первое, поскольку было бы ясно, что этот заголовок принадлежит платформе / SDK, с которой я кросс-компилирую. Но я часто вижу, что также используется вторая альтернатива.