vous pouvez construire les chaînes dans votre exécutable pour les différents emplacements configurées automatiquement que vous pourriez vouloir regarder. Cela est plus ou moins ce que les programmes tels que GCC faire.
par exemple, GCC 4.3.3 sur ma machine a été compilé sous/work5/tmp et configuré pour l'installation dans /usr/gcc/v4.3.3, et il co ntains (parmi beaucoup d'autres) les cordes:
/usr/ccs/bin/
/usr/ccs/lib/
/usr/gcc/v4.3.3
/usr/gcc/v4.3.3/bin/
/usr/gcc/v4.3.3/lib
/usr/gcc/v4.3.3/lib/gcc/
/usr/gcc/v4.3.3/libexec/gcc/
/usr/gcc/v4.3.3/share/locale
/usr/gnu/include
/usr/include
/usr/include/iso
/usr/include/sys
/usr/lib/
/usr/lib/ld.so.1
/usr/libexec/gcc/
/usr/local/share/bison
/usr/tmp
/var/tmp
/var/tmp/
/work5/tmp/gcc-4.3.3-obj/./prev-gcc/include
/work5/tmp/gcc-4.3.3-obj/gcc
/work5/tmp/gcc-4.3.3-obj/intl
/work5/tmp/gcc-4.3.3-obj/libiberty
/work5/tmp/gcc-4.3.3-obj/sparc-sun-solaris2.10/libgcc
Un commentaire dit: « Voilà ce que je suis en train de comprendre comment faire? »
Il existe de nombreuses façons. Une partie de la réponse consiste à savoir de quels noms vous avez besoin. Si vous regardez la sortie autoconfigure, il y a des noms tels que prefixdir et pkglibdir dans le fichier makefile. Vous pouvez les ajouter aux lignes du compilateur C:
DFLAG1 = -DPKGLIBDIR='"$(pkglibdir)"'
et d'ajouter DFLAG1 à votre CFLAGS. Répéter ad nauseam ...
Le code dans votre programme peut alors faire des choses comme:
static const char *libdirs_to_search[] =
{
...
#ifdef PKGLIBDIR
PKGLIBDIR,
#endif /* PKGLIBDIR */
};
Un nettoyeur façon de le faire est de modifier le fichier config.h généré et le code de configuration afin que la Les répertoires qui vous intéressent sont définis dans le fichier config.h plutôt que dans le fichier makefile.
... c'est ce que j'essaie de comprendre comment faire. – MighMoS