2010-07-02 7 views
2

Si deux fichiers source AC et BC: ac comprend le glib.h de glib-2.6.6 et bc comprend glib.h de glib-2.12y compris différentes versions d'en-têtes désinvoltes

Je compilez-les et reliez-les ensemble et générez un programme cible. Supposons que a.c n'utilise aucune nouvelle fonctionnalité introduite après la version 2.6, y compris les différentes versions d'en-têtes causent des problèmes? Si oui, quand un tel problème se produira-t-il?

+0

comment savez-vous quelle version de l'en-tête, il est compris? généralement, il suffit de regarder dans le chemin d'inclusion pour qui est spécifié lors de la compilation. –

+0

Salut SB, J'utilise un Makefile qui peut spécifier le répertoire racine de GLiB et en utilisant #include "glib.h" dans le code. J'ai plusieurs versions d'en-têtes glib installés. – Simon

Répondre

0

Cela ne devrait pas poser de problème. C'est parce que GLib maintient la compatibilité API pour toutes les versions de la série 2.x. Quelle que soit la version des en-têtes que vous utilisez pour compiler votre programme, vous pouvez lier à n'importe quelle version de la bibliothèque, tant que vous n'utilisez aucune fonctionnalité non présente dans cette version de la bibliothèque.

Cependant, vous semblez rendre votre vie inutilement difficile:

J'utilise un Makefile qui peut spécifier le répertoire racine de Glib et en utilisant #include "glib.h" dans le code. J'ai plusieurs versions des en-têtes de glib installés.

Pourquoi diable voudriez-vous faire ça?

0

Voir ce comparison table pour les versions Glib. Des modifications API/ABI de faible gravité ont été effectuées entre les versions 2.6.6 et 2.12.0.

enter image description here

...

enter image description here

Questions connexes