2011-08-25 3 views
1

J'utilise la bibliothèque CImg pour écrire des plugins pour un logiciel d'édition d'image que j'ai créé. Le problème est que lorsque j'inclus CImg, la taille des plugins explose de 200kb à 2Mb! Mais dans ce cas particulier, je n'utilise que 5% du code CImg! Donc, ma question est la suivante: existe-t-il un moyen de supprimer le code inutile au moment de la compilation, de sorte que l'exécutable final n'est pas gonflé?enlever le code inutile au moment de la compilation

(j'utilise Qt 4.8.0 et le dernier CImg, Qt Creator et MacOS Lion).

drapeaux Compile/Lien: QMAKE_CXXFLAGS + = -Os -fdata-sections -ffunction-sections LIBS + = -Wl --gc-sections

+2

Les bibliothèques QT seules ont quelques mégaoctets, donc je ne m'inquiéterais pas trop de la taille de l'exécutable. D'autre part, seulement parce que vous utilisez seulement 5% qui garantit que les fonctions que vous appelez n'utilisent pas les 95% restants? Êtes-vous statique reliant la lib avec votre logiciel? – RedX

Répondre

2

Assurez-vous que vous compilez avec des optimisations complètes (ou juste -Os qui est l'optimisation de la taille) et dépouiller les symboles de débogage avec strip -s. Cela peut prendre beaucoup de place.

n'utilise que 5% du code CImg, les 5% que vous utilisez utilisent les 95% restants en interne. À peu près tout ce que vous pouvez faire est d'optimiser et de dépouiller les symboles de débogage.

+0

'-Os' n'affectera pas l'éditeur de liens, qui est ce qui apporte tout le code CImg. –

0

La première et la plus évidente: avez-vous dépouillé les informations de débogage ? Essayez la commande

strip -s <program> 

De même, compiler avec -Os peut vous aider un peu.

+0

Voici ce que j'utilise: QMAKE_CXXFLAGS + = -Os -fdata-sections -fonction-sections LIBS + = -Wl --gc-sections – deadbird

+0

Et il est compilé en mode de libération;) – deadbird

Questions connexes