2012-02-17 4 views
3

J'ai 2 environnements de construction avec différentes versions de MinGW: un configuré pour Qt et un non. Les deux, cependant, ont les bibliothèques stub statiques de Qt (qui finissent par lier réellement aux dll). Le problème est que je veux construire une bibliothèque statique dans le Qt MinGW, puis l'inclure dans le MinGW non Qt. Je reçois les erreurs de lien suivantes lorsque je tente:Comment lier statiquement une bibliothèque dans une autre bibliothèque statique?

 
moc_browser.cpp:(.eh_frame+0x11): undefined reference to `___gxx_personality_v0' 
browser.cpp:(.text+0x213): undefined reference to `__Unwind_Resume' 

Je trouve que le Qt MinGW relie dynamiquement aux bibliothèques standard et que j'ai besoin d'inclure l'option -static-libgcc. Cependant, je ne sais pas où l'utiliser puisque je ne construis pas un exécutable, mais plutôt une bibliothèque statique.

Répondre

3

Une bibliothèque statique est juste une collection de fichiers objets - une archive. Vous ne le créez pas en liant, mais avec un programme d'archivage (souvent ar). Pour inclure les fichiers objet d'une autre bibliothèque statique dans une nouvelle, vous devez trouver les options pertinentes pour que le programme d'archivage les fusionne.

+2

voir http://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one/9330267#9330267 pour les options de 'ar' – osgx

+0

Bon appel, ou aller à la source: http://sourceware.org/binutils/docs-2.22/binutils/ar-cmdline.html#ar-cmdline – eriktous

+0

et une de plus avec libtool: http://stackoverflow.com/a/8170851/196561 – osgx

Questions connexes