用于C的UUID库?

我正在寻找一个用C语言进行编程的UUID库,在大多数现代Linux桌面上有合理的安装概率(至less可以通过软件包pipe理器安装),并且可以与pkg-config

以下两种可能性似乎最明显:

  • OSSP UUID
  • Libuuid从e2fsprogs

有没有人有这两个经验,可以推荐一个在另一个,或第三个可能性?

我用这两个,我绝对喜欢util-linux-ng(以前在e2fsprogs)之一。 为了便于携带,我使用我的软件支持并使用autoconf / cmake宏来检测安装哪一个。

对于我来说OSSP的主要问题是它没有很好的理由在C中滥用面向对象。 UUID只是一个128位数字,可以用char [16]数组表示。 UUID通常与另一个结构(UUID作为这种结构的关键字或标识符)相关联,因此,如果可以在结构中内联这个数组,就应该很好。

使用OSSP UUID,它会为您提供一个指向动态分配对象的uuid_t*指针,该对象保持的状态不仅仅是UUID值。 如果您使用了数以万计的对象,这会明显地使程序变慢,使用更多的内存并导致更多的内存碎片。 最后,为了使OSSP UUID可用,您必须使用它来生成UUID(这涉及4个调用:uuid_create,uuid_make,uuid_export和uuid_destroy),并且自己使用UUID值。 有了util-linux-ng,它只是一个调用:uuid_generate。