autoscan
произвел ряд проверок функций (AC_FUNC_*
и AC_CHECK_FUNCS
) и . Теперь мне нужно взять код gnulib. Я просто пытаюсь импортировать каждую функцию и заголовок, идентифицированные автоскандами? Половина из них не отображается на выходе gnulib-tool --list
. Или я жду, пока ./configure
не сработает на какой-либо платформе?Как определить, что импортировать с помощью gnulib-инструмента
ответ
Мое предложение было бы ignore autoscan entirely и вместо этого попытаться выяснить, на какой платформе вы нацеливаетесь.
В частности, autoscan попытается добавить тесты для функций, которые доступны на каждой платформе с 1990 года, но может отсутствовать, например, на ОС, отличной от SysV.
Начните работу с целевой базой платформы (например, C99 и последней версией POSIX), а затем выясните, какие другие ОС вы хотите настроить и чего не хватает.
Не пытайтесь покрыть базы для ОС, к которым у вас нет доступа, скорее всего, вы не будете знать, что им нужно для их создания, не говоря уже о запуске.
Полное указание всех источников обязательно.
Есть два способа, чтобы определить, какой список из gnulib модулей, которые вы, возможно, потребуется:
- Вы можете сканировать исходный код или файлы объектов (с
nm
) вручную. - Вы можете импортировать all the POSIX header file modules через
gnulib-tool
, а затем добавить-DGNULIB_POSIXCHECK
в CFLAGS, скомпилировать ваш пакет и проанализировать полученные предупреждения.
Кроме того, некоторые ограничения gnulib существуют только для старых платформ. Вы можете прочитать list of what each override fixes и применить свое собственное мнение.