Соглашение о включении заголовков из sysroot в C - PullRequest
0 голосов
/ 06 сентября 2018

Я кросс-компиляция исходного файла, который требует определенного заголовка. Этот заголовок является частью 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, с которой я кросс-компилирую. Но я часто вижу, что также используется вторая альтернатива.

...