2017-09-25 1 views
2

Dans quelques projets, je n'ai pas de lien explicite avec libgcc, donc certaines choses manquent.Est-il possible de blacklister certaines fonctions intégrées d'être émises lors de la compilation?

Dans certaines circonstances, cela peut entraîner des défaillances de référence indéfinies pour des fonctions telles que __gnu_thumb1_case_uqi lorsque vous spécifiez l'optimisation -Os par exemple.

Comment puis-je empêcher gcc d'émettre ces fonctions pendant la compilation?

+0

Je crois qu'il est impossible d'éviter complètement les émissions d'appels à libgcc. –

Répondre

0

Vous pouvez essayer:

-fno-builtin 
-fno-builtin-function 

Ne pas reconnaître les fonctions intégrées qui ne commencent pas par « __builtin_ » comme préfixe. Voir Autres fonctions intégrées fournies par GCC, pour les détails des fonctions affectées, y compris celles qui ne sont pas intégrées lorsque les options -ansi ou -std pour une conformité ISO C stricte sont utilisées car elles n'ont pas de signification standard ISO.

GCC Online Docs

Cependant, si vous #include les fichiers d'en-tête avec des macros qui se dilatent dans les appels à GCC fonctions intégrées, on ne peut arrêter que de ne pas y compris les en-têtes. Si vous ne créez pas de liens avec les bibliothèques standard, vous ne souhaitez probablement pas les inclure à partir des fichiers d'en-tête standard.