2010-05-17 10 views
0

Je compile mon programme avec l'architecture ensemble àquestion de l'architecture gcc

-mtune=i386 

Cependant, je relie également statiquement contre plusieurs libs (libpng, zlib, jpeglib, vorbisfile, libogg). J'ai construit ces libs par moi-même en utilisant configure et make, donc je suppose que ces libs ont été construites avec l'architecture étant définie sur l'architecture de mon système qui serait i686. Mais je ne veux pas ça! Je veux aussi que mon programme s'exécute sur i386, donc je dois m'assurer que toutes les bibliothèques avec lesquelles je suis en liaison statique sont construites pour i386 aussi. Donc ma question: Y a-t-il un moyen pratique de compiler libpng/zlib/jpeglib/vorbisfile/libogg etc. pour i386 ou dois-je modifier manuellement tous les makefiles et m'assurer que -mtune est défini sur i386?

Merci pour votre aide!

Andy

Répondre

2

--mtune airs que la sortie d'instructions (de commande, planification, etc.), mais ne garantit pas la sortie est i386, thats ce que --mcpu ou --march ou Target est pour (i386-...)

2

Je pense que

CFLAGS="-march=i386 -O3" make ...

pourrait fonctionner si elles utilisent autotools pour générer le Makefile. Vous pouvez également extraire les fichiers d'un RPM s'ils ont le .a et les en-têtes pour la version que vous voulez. Ou optez pour un SRPM et modifier les spécifications/scripts pour construire l'arc:

RPM_ARCH="i386" 

Mais il est vraiment pas beaucoup de mal à reconstruire les bibliothèques correctement, pour vous assurer de ne rien manquer. ce n'est pas comme si vous compiliez une distribution entière.

+0

Je m'oppose! :-) Il y a beaucoup de problèmes car le script configure a généré une bête makefile de 50 Ko qui contient beaucoup de références à "i686". Ces références ne disparaissent pas non plus quand on fait un ./configure --target = i386 Ce n'est vraiment pas si facile d'analyser ce qui se passe là-bas ... il serait probablement plus facile de créer mon propre makefile que de jouer avec l'auto a généré un ... – Andy