2010-04-02 17 views
13

Estoy buscando una biblioteca UUID para programar en C, que tiene una probabilidad razonable de ser instalado (o al menos instalable por el administrador de paquetes) en la mayoría de los escritorios Linux modernos, y funciona con pkg-config.Biblioteca de UUID para C?

Los siguientes dos posibilidades parecen más obvia:

¿Alguien tiene experiencia con estos dos y puede recomendar uno sobre el otro, o una tercera posibilidad ?

Respuesta

18

He usado ambos, y definitivamente prefiero el util-linux-ng (anteriormente en e2fsprogs) uno. Para la portabilidad, hago que mi software sea compatible y use macros autoconf/cmake para detectar cuál está instalado.

El principal problema con OSSP para mí es que abusa de la orientación a objetos en C sin una buena razón. Un UUID es solo un número de 128 bits, que se puede representar con una matriz char [16]. El UUID generalmente se asocia con otra estructura (el UUID sirve como clave o identificador para dicha estructura), por lo que debería ser bueno si pudiera alinear esa matriz en la estructura misma.

Con OSSP UUID, le da un puntero uuid_t* a un objeto dinámicamente asignado, que tiene más estado que el valor UUID. Si trabaja con decenas de miles de objetos, esto hace que el programa sea más lento, utiliza más memoria y causa más fragmentación de memoria. Al final, para hacer que el UUID de OSSP sea utilizable, debe usarlo solo para generar el UUID (que implica 4 llamadas: uuid_create, uuid_make, uuid_export y uuid_destroy) y trabaje con el valor de UUID usted mismo. Con util-linux-ng, es solo una llamada: uuid_generate.

+0

+1, buena respuesta. –

+0

Juliano, ¿te importaría compartir las directivas de configuración Autoconf específicas que estás utilizando para esta configuración? Lo estoy averiguando desde cero en este momento, pero al ser un novato de Autotools, me sentiría mejor confiando en algo que ya se está usando con éxito en la naturaleza. Cualquier sugerencia apreciada ... –

+3

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