2016-07-07 1 views
0

autoscan a produit une série de contrôles de fonctionnement (AC_FUNC_* et AC_CHECK_FUNCS), et AC_CHECK_HEADERS. Maintenant, je dois tirer dans le code gnulib. Est-ce que j'essaye juste d'importer chaque fonction et en-tête que autoscan a identifié? La moitié d'entre eux n'apparaissent pas dans la sortie gnulib-tool --list. Ou dois-je attendre jusqu'à ce que ./configure échoue sur une plate-forme?Comment déterminer ce qu'il faut importer en utilisant gnulib-tool

Répondre

1

Ma suggestion serait de ignore autoscan entirely et de tenter à la place de déterminer quelle plate-forme que vous ciblez. En particulier, autoscan va essayer d'ajouter des tests pour les fonctions disponibles sur toutes les plates-formes depuis 1990, mais qui pourraient manquer sur un système d'exploitation non-SysV par exemple. Commencez avec une cible de plate-forme de base (telle que C99 et la dernière version de POSIX), puis déterminez quels autres systèmes d'exploitation que vous souhaitez cibler et quels sont ceux qui leur manquent. N'essayez pas de couvrir les bases des systèmes d'exploitation auxquels vous n'avez pas accès, il est probable que vous ne sachiez pas réellement ce qu'il faut pour les construire, et encore moins pour les exécuter.

Déclarations complètes: J'ai changé my opinion on gnulib au cours des années et je ne suggère pas qu'il soit utilisé plus, si possible.

0

Il y a deux façons de déterminer quelle liste des modules de gnulib vous pourriez avoir besoin:

  • Vous pouvez scanner votre code source ou vos fichiers objet (avec nm) à la main.
  • Vous pouvez importer all the POSIX header file modules via gnulib-tool, puis ajouter -DGNULIB_POSIXCHECK au CFLAGS, compiler votre package et analyser les avertissements qui en résultent.

De plus, certains remplacements de gnulib existent uniquement pour les anciennes plates-formes. Vous pouvez lire le list of what each override fixes et appliquer votre propre jugement.