Si vous venez d'atteindre votre limite de RAM, vous serez probablement en mesure d'entendre le disque fonctionner, et un moniteur d'activité du système vous le dira. Mais si la liaison est toujours liée au processeur (c'est-à-dire si l'utilisation du processeur est encore élevée), ce n'est pas le problème. Et si la liaison est liée à l'E/S, le coupable le plus courant peut être une information d'exécution. Jetez un oeil à la taille de l'exécutable de toute façon.
Pour répondre à votre problème d'une manière différente: utilisez-vous un modèle lourd? Pour chaque utilisation d'un modèle avec un paramètre de type différent, une nouvelle instance de l'ensemble du modèle est générée, ce qui vous donne plus de travail pour l'éditeur de liens. Pour que cela soit vraiment perceptible, cependant, vous devez utiliser une bibliothèque très lourde sur les modèles. Un grand nombre de projets du projet Boost se qualifient - j'ai utilisé le code basé sur un template pour utiliser Boost :: Spirit avec une grammaire complexe. Et ~ 4000 lignes de code compilées à 7,7M d'exécutable - en changeant une ligne doublé le nombre de spécialisations requises et la taille de l'exécutable final. Inline a beaucoup aidé, ce qui a permis d'atteindre 1,9 million de résultats.
Les bibliothèques partagées peuvent causer d'autres problèmes, vous pouvez regarder la documentation de -fvisibility = hidden, et cela améliorera quand même votre code.A partir de manuel de GCC pour -fvisibility:
Using this feature can very substantially
improve linking and load times of shared object libraries, produce
more optimized code, provide near-perfect API export and prevent
symbol clashes. It is *strongly* recommended that you use this in
any shared objects you distribute.
En fait, l'éditeur de liens doit normalement soutenir la possibilité de l'application ou pour d'autres bibliothèques pour passer outre les symboles définis dans la bibliothèque, alors que généralement ce n'est pas le but usage. Notez que cela n'est pas gratuit mais cela nécessite des changements de code (triviaux). Le lien suggéré par les docs est: http://gcc.gnu.org/wiki/Visibility