2010-04-02 3 views
13

Я ищу библиотеку UUID для программирования на C, которая имеет разумную вероятность быть установленной (или, по крайней мере, устанавливаемой менеджером пакетов) на большинстве современных настольных компьютеров Linux, и работает с pkg-config.Библиотека UUID для C?

Следующие две возможности кажутся наиболее очевидны:

Кто-нибудь есть опыт работы с этими двумя, и может рекомендовать один над другим, или третье Possiblity ?

ответ

18

Я использовал оба варианта, и я определенно предпочитаю использовать 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.

+0

+1, хороший ответ. –

+0

Juliano, не могли бы вы поделиться с другими конфигурационными настройками Autoconf, которые вы используете для этой настройки? Я понимаю это с нуля на данный момент, но, будучи новичком Autotools, я бы лучше полагался на то, что уже успешно используется в дикой природе. Любые подсказки оценены ... –

+3

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

Смежные вопросы