Je souhaite ajouter un symbole masquant les symboles internes à une bibliothèque existante avec un système de génération autoconf. Quelle est la meilleure façon d'explorer l'équivalent du compilateur local pour -fvisibility=hidden
et __attribute__ ((visibility("default")))
?Meilleures pratiques pour rechercher des extensions de visibilité de symboles dans autoconf
2
A
Répondre
3
Je ne pense pas qu'il existe une macro standard pour cela, mais voici quelque chose que vous devriez pouvoir étendre pour prendre en charge d'autres compilateurs si nécessaire, par ex. __hidden
pour les compilateurs Sun:
AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
ac_cv_hidden_visibility_attribute, [
echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
ac_cv_hidden_visibility_attribute=no
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD);
then
if grep '\.hidden.*foo' conftest.s >/dev/null;
then
ac_cv_hidden_visibility_attribute=yes
fi
fi
rm -f conftest.*
])
if test $ac_cv_hidden_visibility_attribute = yes;
then
AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
[Define if __attribute__((visibility("hidden"))) is supported.])
fi
Le résultat config.h
:
/* Define if __attribute__((visibility("hidden"))) is supported. */
#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1
0
Vous pouvez essayer d'utiliser <sys/cdefs.h>
avec macro __hiden
Questions connexes
- 1. Meilleures pratiques pour gérer des symboles de binaires
- 2. La visibilité des modifications validées dans Lucene. Meilleures pratiques
- 3. Meilleures pratiques Android Meilleures pratiques
- 4. Visibilité des symboles sous Windows
- 5. marge des meilleures pratiques
- 6. Meilleures pratiques de contrôle
- 7. Meilleures pratiques de surcharge
- 8. Meilleures pratiques de convertisseur pour de meilleures performances
- 9. Meilleures pratiques de PyLint?
- 10. Meilleures pratiques pour les noms d'identifiants/classes dans les extensions de navigateur
- 11. Firefox Extensions - bonnes pratiques
- 12. Meilleures pratiques pour travailler avec des devises
- 13. Meilleures pratiques pour stocker des clés secrètes
- 14. Architecture des meilleures pratiques pour l'application Android
- 15. Meilleures pratiques pour afficher des rapports
- 16. meilleures pratiques pour retour des références d'objets
- 17. Meilleures pratiques d'authentification des utilisateurs
- 18. Meilleures pratiques pour les chaînes de connexion
- 19. Rails Filtrage des meilleures pratiques
- 20. Meilleures pratiques pour l'API de procédure stockée?
- 21. Meilleures pratiques: Suivi des impressions de bannières
- 22. Meilleures pratiques pour la configuration de l'application
- 23. meilleures pratiques pour définir l'environnement de développement
- 24. BlackBerry Listes des meilleures pratiques
- 25. Stockage des clés de chiffrement - meilleures pratiques?
- 26. Meilleures pratiques de sélection des pays
- 27. Meilleures pratiques de publication d'Erlang?
- 28. Meilleures pratiques de l'API REST
- 29. Meilleures pratiques pour Python UnicodeDecodeError
- 30. Meilleures pratiques pour Entity Framework?