2010-04-02 4 views
13

Je cherche une bibliothèque UUID pour la programmation en C, qui a une probabilité raisonnable d'être installée (ou au moins installable par le gestionnaire de paquets) sur la plupart des bureaux Linux modernes, et fonctionne avec pkg-config.Bibliothèque UUID pour C?

Les deux possibilités suivantes semblent le plus évident:

Quelqu'un at-il une expérience avec ces deux et peut recommander un sur l'autre, ou un troisième possiblity ?

Répondre

18

J'ai utilisé les deux, et je préfère nettement l'utilitaire util-linux-ng (anciennement dans e2fsprogs). Pour la portabilité, je prends en charge mes deux logiciels et j'utilise les macros autoconf/cmake pour détecter celle qui est installée.

Le principal problème avec OSSP pour moi est qu'il abuse de l'orientation de l'objet dans C sans raison valable. Un UUID est juste un nombre de 128 bits, qui peut être représenté avec un tableau char [16]. L'UUID est généralement associé à une autre structure (l'UUID sert de clé ou d'identifiant pour une telle structure), donc cela devrait être bon si vous pouviez aligner ce tableau dans la structure elle-même. Avec l'UUID OSSP, il vous donne un pointeur uuid_t* vers un objet alloué dynamiquement, qui contient plus d'état que juste la valeur UUID. Si vous travaillez avec des dizaines de milliers d'objets, cela ralentit sensiblement le programme, consomme plus de mémoire et provoque plus de fragmentation de la mémoire. A la fin, pour rendre OSSP UUID utilisable, vous devez l'utiliser juste pour générer l'UUID (qui implique 4 appels: uuid_create, uuid_make, uuid_export et uuid_destroy) et travailler avec la valeur UUID vous-même. Avec util-linux-ng, c'est juste un seul appel: uuid_generate.

+0

+1, bonne réponse. –

+0

Juliano, cela vous dérangerait-il de partager les directives de configuration spécifiques d'Autoconf que vous utilisez pour cette configuration? Je suis en train de le découvrir à partir de rien pour le moment, mais étant un novice d'Autotools je me sentirais mieux de me fier à quelque chose qui a déjà été utilisé avec succès dans la nature. Toutes les indications appréciées ... –

+3

@Arto: http://pastebin.com/t04f5KmP – Juliano