2010-04-18 4 views
0

Je crée un moteur de jeu pour les appareils mobiles. Je veux compiler mon code, le lier à quelques bibliothèques statiques puis combiner mon code compilé avec ces bibliothèques statiques pour former une nouvelle bibliothèque statique. Cependant, mon Google Fu m'abandonne.Combiner plusieurs archives statiques dans une nouvelle

Supposons que je les bibliothèques statiques a.a, b.a et c.a et mon code. Je veux compiler tout cela en awesome.a.

Comment puis-je faire cela? J'utilise d'ailleurs le code arm-none-linux-gnueabi-ar de CodeSourcery.

Merci d'avance.

Répondre

3

En supposant que a.a, b.a et c.a sont dans la CWD, quelque chose comme:

mkdir a-objs && (cd a-objs && ar -x ../a.a) 
mkdir b-objs && (cd b-objs && ar -x ../b.a) 
mkdir c-objs && (cd c-objs && ar -x ../c.a) 
rm -f awesome.a && ar -r awesome.a a-objs/* b-objs/* c-objs/* && ranlib awesome.a 

devrait fonctionner.

+0

Ah, d'accord, mais puis-je aussi combiner cela avec mon code compilé (mon .o's)? – knight666

+0

D'accord, un peu maladroit, mais cela fonctionne: $ (YG_ARCHIVER) -vq $ (PROGS) $^&& $ (YG_ARCHIVER) -vr $ (PROGS) $ (YG_LIBRARIES). Donc il compile ma bibliothèque statique et ensuite il y ajoute les autres. – knight666

0

Si vous voulez mettre du code dans une bibliothèque statique, vous ne le liez PAS. Une bibliothèque statique n'est pas liée du tout cependant. C'est juste une collection de fichiers d'objets placés dans un seul fichier par souci de commodité.

Vous créez des fichiers objet et les placez dans la bibliothèque. Si vous voulez ajouter vos fichiers objets dans une bibliothèque existante au lieu d'en créer une nouvelle, c'est assez trivial (bien que si la bibliothèque existante est suffisamment connue pour que quelqu'un ait des attentes sur ce qu'elle contient ou non, Je dirais que c'est probablement une mauvaise idée d'ajouter de nouvelles choses que les gens ne sauront pas attendre).

Questions connexes