GLib (qu'il ne faut surtout pas confondre avec Glibc, la « GNU C Library ») est une bibliothèque libre pour le langage C et spécifiquement l'interface de programmation GTK. Sans se substituer à la bibliothèque standard du C, elle en réécrit certains aspects, comme les fonctions de traitement de chaînes alphanumériques et de fichiers, ou la gestion des erreurs d'appel ; mais implémente aussi des structures de données élaborées : arbres, table de hachage et listes. Cette bibliothèque offre les principales fonctions de gestion de la boucle d'événements (clics souris, frappe clavier, signaux en général) de GTK : pile d'exécution, tas mémoire, callbacks. De par son caractère très général et sa licence libre, cette bibliothèque est utilisable pour programmer toutes sortes d'applications, en évitant certaines difficultés de la bibliothèque standard de C. C'était à l'origine un sous-ensemble de fonctions destinées à faciliter le portage du code GTK sur différentes plates-formes, en donnant aux types (booléens, entiers longs, pointeurs) le même format et la même taille en octets ; le codage des entiers, notamment, pose un problème de compatibilité particulier : le « boutisme ». Au moment de la conception de GTK 2 (appelé alors GTK+ 2), les développeurs décidèrent de sortir de l'interface GTK toutes les fonctions non-graphiques pour en faire une bibliothèque généraliste : GLib. Elle s'est désormais étendue pour offrir des fonctionnalités supplémentaires (sécurité sur l'adressage des chaînes de caractères, formats date/heure, gestion de l'espace-disque, appels système, etc.). GLib fait partie du paquet GTK du projet GNU. Elle est distribuée selon les termes de la licence GNU LGPL. Outre la portabilité des données, GLib a été conçu pour donner à GTK une structure de langage objet, qui n'existe pas en langage C. Il s'agit de créer une arborescence de types abstraits : 'GtkObject → GtkWidget → GtkContainer → GtkBin' → GtkWindow Une fenêtre graphique de GTK (GtkWIndow) est en effet un objet élaboré dont les paramètres d'état (position, taille, palette de couleurs, fontes, possibilités d'interaction, visibilité et activité) sont organisés en strates hiérarchiques.