2010-04-02 12 views
13

Poszukuję biblioteki UUID do programowania w C, która ma uzasadnione prawdopodobieństwo, że zostanie zainstalowana (lub przynajmniej zainstalowana przez menedżera pakietów) na większości nowoczesnych komputerów stacjonarnych z systemem Linux i współpracuje z pkg-config.Biblioteka UUID dla C?

dwóch poniższych możliwości wydaje się najbardziej oczywiste:

Czy ktoś ma doświadczenia z tymi dwoma i może polecić jedną nad drugą lub trzecią możliwo ?

Odpowiedz

18

Użyłem obu i zdecydowanie preferuję jeden z nich: util-linux-ng (poprzednio w e2fsprogs). W celu zapewnienia przenośności, zapewniam obsługę mojego oprogramowania i używam makr autoconf/cmake, aby wykryć, który z nich jest zainstalowany.

Dla mnie głównym problemem OSSP jest nadużywanie orientacji obiektu w C bez ważnego powodu. Identyfikator UUID to tylko 128-bitowa liczba, którą można przedstawić za pomocą tablicy char [16]. Identyfikator UUID jest zwykle powiązany z inną strukturą (identyfikator UUID służy jako klucz lub identyfikator takiej struktury), więc powinno być dobrze, jeśli można wstawić tę tablicę do samej struktury.

Za pomocą UUID OSSP daje on wskaźnik uuid_t* do dynamicznie przydzielanego obiektu, który ma więcej stanów niż tylko wartość UUID. Jeśli pracujesz z dziesiątkami tysięcy obiektów, rozsądnie czyni to program wolniejszym, zużywa więcej pamięci i powoduje większą fragmentację pamięci. Na koniec, aby OSU UUID był użyteczny, musisz go użyć tylko do wygenerowania UUID (który obejmuje 4 wywołania: uuid_create, uuid_make, uuid_export i uuid_destroy) i samemu pracować z wartością UUID. Dzięki util-linux-ng jest to tylko jedno połączenie: uuid_generate.

+0

+1, dobra odpowiedź. –

+0

Juliano, czy mógłbybyś podzielić się szczegółowymi dyrektywami konfiguracyjnymi Autoconf, których używasz do tej konfiguracji? W tej chwili szukam go od zera, ale będąc początkującym Autotools, czuję, że lepiej polegam na czymś, co jest już z powodzeniem wykorzystywane na wolności. Wszelkie wskazówki są mile widziane ... –

+3

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