libuuid是一个开源的用于生成UUID(Universally Unique Identifier,通用唯一标识符)的库。

可从https://sourceforge.net/projects/libuuid/ 下载,最新版本为1.0.3,更新于2013年4月27日,此库仅支持在类Linux下编译使用。

之前在Windows上,我们产生guid(uuid在Windows上的叫法,是一个东西)可以使用API函数CoCreateGuid。

CrossGuid是一个最小的跨平台C ++ GUID库。它在给定平台上使用最好的本机GUID / UUID生成器,并具有用于解析,字符串化和比较ID的通用类。

可从https://github.com/graeme-hill/crossguid下载使用

接下来,我们在linux ubuntu上编译学习以下这两个库:

  • libuuid

  

  libuuid已经为我们提供了configure,直接./configure & make & make install三部曲即可,最终编译生成libuuid.a供程序链接使用,自带的一个C测试例子test_uuid.c,全部的终端执行如下:

Shell code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
 
michael@ubuntu:~/git$ cd ./libuuid-/
michael@ubuntu:~/git/libuuid-.3$ ls
aclocal.m4    config.h.in   depcomp      Makefile.in  test_uuid.c  uuidP.h
all-io.h      config.sub    gen_uuid.c   missing      unpack.c     uuid_time.c
c.h           configure     install-sh   pack.c       unparse.c
clear.c       configure.ac  isnull.c     parse.c      uuidd.h
compare.c     copy.c        ltmain.sh    randutils.c  uuid.h
config.guess  COPYING       Makefile.am  randutils.h  uuid.pc.in
michael@ubuntu:~/git/libuuid-.3$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum 
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for library containing socket... none required
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for inttypes.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking whether _SC_HOST_NAME_MAX is declared... yes
checking for int32_t... yes
checking for mode_t... yes
checking for size_t... yes
checking for ssize_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for ftruncate... yes
checking for gettimeofday... yes
checking for memset... yes
checking for socket... yes
checking for strtoul... yes
checking for usleep... yes
checking for srandom... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating uuid.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
michael@ubuntu:~/git/libuuid-.3$ make
make  all-am
make[]: Entering directory '/home/michael/git/libuuid-1.0.3'
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-clear.lo -MD -MP -MF .deps/libuuid_la-clear.Tpo -c -o libuuid_la-clear.lo `test -f 'clear.c' || echo './'`clear.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-clear.lo -MD -MP -MF .deps/libuuid_la-clear.Tpo -c clear.c  -fPIC -DPIC -o .libs/libuuid_la-clear.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-clear.lo -MD -MP -MF .deps/libuuid_la-clear.Tpo -c clear.c -o libuuid_la-clear.o >/dev/null 
mv -f .deps/libuuid_la-clear.Tpo .deps/libuuid_la-clear.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-compare.lo -MD -MP -MF .deps/libuuid_la-compare.Tpo -c -o libuuid_la-compare.lo `test -f 'compare.c' || echo './'`compare.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-compare.lo -MD -MP -MF .deps/libuuid_la-compare.Tpo -c compare.c  -fPIC -DPIC -o .libs/libuuid_la-compare.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-compare.lo -MD -MP -MF .deps/libuuid_la-compare.Tpo -c compare.c -o libuuid_la-compare.o >/dev/null 
mv -f .deps/libuuid_la-compare.Tpo .deps/libuuid_la-compare.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-copy.lo -MD -MP -MF .deps/libuuid_la-copy.Tpo -c -o libuuid_la-copy.lo `test -f 'copy.c' || echo './'`copy.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-copy.lo -MD -MP -MF .deps/libuuid_la-copy.Tpo -c copy.c  -fPIC -DPIC -o .libs/libuuid_la-copy.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-copy.lo -MD -MP -MF .deps/libuuid_la-copy.Tpo -c copy.c -o libuuid_la-copy.o >/dev/null 
mv -f .deps/libuuid_la-copy.Tpo .deps/libuuid_la-copy.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-gen_uuid.lo -MD -MP -MF .deps/libuuid_la-gen_uuid.Tpo -c -o libuuid_la-gen_uuid.lo `test -f 'gen_uuid.c' || echo './'`gen_uuid.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-gen_uuid.lo -MD -MP -MF .deps/libuuid_la-gen_uuid.Tpo -c gen_uuid.c  -fPIC -DPIC -o .libs/libuuid_la-gen_uuid.o
In file included from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:,
                 from /usr/include/stdio.h:,
                 from gen_uuid.c::
/usr/include/features.h:: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
 # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
   ^~~~~~~
gen_uuid.c: In function 'get_clock':
gen_uuid.c:: warning: implicit declaration of function 'flock'; did you mean 'clock'? [-Wimplicit-function-declaration]
   ) {
          ^~~~~
          clock
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-gen_uuid.lo -MD -MP -MF .deps/libuuid_la-gen_uuid.Tpo -c gen_uuid.c -o libuuid_la-gen_uuid.o >/dev/null 
mv -f .deps/libuuid_la-gen_uuid.Tpo .deps/libuuid_la-gen_uuid.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-isnull.lo -MD -MP -MF .deps/libuuid_la-isnull.Tpo -c -o libuuid_la-isnull.lo `test -f 'isnull.c' || echo './'`isnull.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-isnull.lo -MD -MP -MF .deps/libuuid_la-isnull.Tpo -c isnull.c  -fPIC -DPIC -o .libs/libuuid_la-isnull.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-isnull.lo -MD -MP -MF .deps/libuuid_la-isnull.Tpo -c isnull.c -o libuuid_la-isnull.o >/dev/null 
mv -f .deps/libuuid_la-isnull.Tpo .deps/libuuid_la-isnull.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-pack.lo -MD -MP -MF .deps/libuuid_la-pack.Tpo -c -o libuuid_la-pack.lo `test -f 'pack.c' || echo './'`pack.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-pack.lo -MD -MP -MF .deps/libuuid_la-pack.Tpo -c pack.c  -fPIC -DPIC -o .libs/libuuid_la-pack.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-
mv -f .deps/libuuid_la-pack.Tpo .deps/libuuid_la-pack.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-parse.lo -MD -MP -MF .deps/libuuid_la-parse.Tpo -c -o libuuid_la-parse.lo `test -f 'parse.c' || echo './'`parse.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-parse.lo -MD -MP -MF .deps/libuuid_la-parse.Tpo -c parse.c  -fPIC -DPIC -o .libs/libuuid_la-parse.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-parse.lo -MD -MP -MF .deps/libuuid_la-parse.Tpo -c parse.c -o libuuid_la-parse.o >/dev/null 
mv -f .deps/libuuid_la-parse.Tpo .deps/libuuid_la-parse.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-unpack.lo -MD -MP -MF .deps/libuuid_la-unpack.Tpo -c -o libuuid_la-unpack.lo `test -f 'unpack.c' || echo './'`unpack.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-unpack.lo -MD -MP -MF .deps/libuuid_la-unpack.Tpo -c unpack.c  -fPIC -DPIC -o .libs/libuuid_la-unpack.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-
mv -f .deps/libuuid_la-unpack.Tpo .deps/libuuid_la-unpack.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-unparse.lo -MD -MP -MF .deps/libuuid_la-unparse.Tpo -c -o libuuid_la-unparse.lo `test -f 'unparse.c' || echo './'`unparse.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-unparse.lo -MD -MP -MF .deps/libuuid_la-unparse.Tpo -c unparse.c  -fPIC -DPIC -o .libs/libuuid_la-unparse.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-unparse.lo -MD -MP -MF .deps/libuuid_la-unparse.Tpo -c unparse.c -o libuuid_la-unparse.o >/dev/null 
mv -f .deps/libuuid_la-unparse.Tpo .deps/libuuid_la-unparse.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-uuid_time.lo -MD -MP -MF .deps/libuuid_la-uuid_time.Tpo -c -o libuuid_la-uuid_time.lo `test -f 'uuid_time.c' || echo './'`uuid_time.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-uuid_time.lo -MD -MP -MF .deps/libuuid_la-uuid_time.Tpo -c uuid_time.c  -fPIC -DPIC -o .libs/libuuid_la-uuid_time.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-uuid_time.lo -MD -MP -MF .deps/libuuid_la-uuid_time.Tpo -c uuid_time.c -o libuuid_la-uuid_time.o >/dev/null 
mv -f .deps/libuuid_la-uuid_time.Tpo .deps/libuuid_la-uuid_time.Plo
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I. -g -O2 -MT libuuid_la-randutils.lo -MD -MP -MF .deps/libuuid_la-randutils.Tpo -c -o libuuid_la-randutils.lo `test -f 'randutils.c' || echo './'`randutils.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-randutils.lo -MD -MP -MF .deps/libuuid_la-randutils.Tpo -c randutils.c  -fPIC -DPIC -o .libs/libuuid_la-randutils.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -g -O2 -MT libuuid_la-randutils.lo -MD -MP -MF .deps/libuuid_la-randutils.Tpo -c randutils.c -o libuuid_la-randutils.o >/dev/null 
mv -f .deps/libuuid_la-randutils.Tpo .deps/libuuid_la-randutils.Plo
/bin/bash ./libtool  --tag=CC   --mode=  -o libuuid.la -rpath /usr/local/lib libuuid_la-clear.lo libuuid_la-compare.lo libuuid_la-copy.lo libuuid_la-gen_uuid.lo libuuid_la-isnull.lo libuuid_la-pack.lo libuuid_la-parse.lo libuuid_la-unpack.lo libuuid_la-unparse.lo libuuid_la-uuid_time.lo libuuid_la-randutils.lo   
libtool: 
libtool: link: (cd ".libs" && rm -f "libuuid.so.1" && ln -s "libuuid.so.1.0.0" "libuuid.so.1")
libtool: link: (cd ".libs" && rm -f "libuuid.so" && ln -s "libuuid.so.1.0.0" "libuuid.so")
libtool: link: ar cru .libs/libuuid.a  libuuid_la-clear.o libuuid_la-compare.o libuuid_la-copy.o libuuid_la-gen_uuid.o libuuid_la-isnull.o libuuid_la-pack.o libuuid_la-parse.o libuuid_la-unpack.o libuuid_la-unparse.o libuuid_la-uuid_time.o libuuid_la-randutils.o
ar: `u' modifier ignored since `D' is the default (see `U')
libtool: link: ranlib .libs/libuuid.a
libtool: link: ( cd ".libs" && rm -f "libuuid.la" && ln -s "../libuuid.la" "libuuid.la" )
make[]: Leaving directory '/home/michael/git/libuuid-1.0.3'
michael@ubuntu:~/git/libuuid-.3$ make install
make[]: Entering directory '/home/michael/git/libuuid-1.0.3'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ./libtool   --mode=install /usr/bin/install -c   libuuid.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libuuid.so.
/usr/bin/install: cannot create regular file '/usr/local/lib/libuuid.so.1.0.0': Permission denied
make[
make[]: Leaving directory '/home/michael/git/libuuid-1.0.3'
make: *** [Makefile:
michael@ubuntu:~/git/libuuid-.3$ sudo make install
[sudo] password for michael: 
make[]: Entering directory '/home/michael/git/libuuid-1.0.3'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ./libtool   --mode=install /usr/bin/install -c   libuuid.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libuuid.so.
libtool: install: (cd /usr/; }; })
libtool: install: (cd /usr/ libuuid.so; }; })
libtool: install: /usr/bin/install -c .libs/libuuid.lai /usr/local/lib/libuuid.la
libtool: install: /usr/bin/install -c .libs/libuuid.a /usr/local/lib/libuuid.a
libtool: install:  /usr/local/lib/libuuid.a
libtool: install: ranlib /usr/local/lib/libuuid.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld() manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c - uuid.pc '/usr/local/lib/pkgconfig'
 /bin/mkdir -p '/usr/local/include/uuid'
 /usr/bin/install -c - uuid.h '/usr/local/include/uuid'
make[]: Leaving directory '/home/michael/git/libuuid-1.0.3'
michael@ubuntu:~/git/libuuid-.3$ ls
aclocal.m4     gen_uuid.c              libuuid_la-pack.o        pack.c
all-io.h       install-sh              libuuid_la-parse.lo      parse.c
c.h            isnull.c                libuuid_la-parse.o       randutils.c
clear.c        libtool                 libuuid_la-randutils.lo  randutils.h
compare.c      libuuid.la              libuuid_la-randutils.o   stamp-h1
config.guess   libuuid_la-clear.lo     libuuid_la-unpack.lo     test_uuid.c
config.h       libuuid_la-clear.o      libuuid_la-unpack.o      unpack.c
config.h.in    libuuid_la-compare.lo   libuuid_la-unparse.lo    unparse.c
config.log     libuuid_la-compare.o    libuuid_la-unparse.o     uuidd.h
config.status  libuuid_la-copy.lo      libuuid_la-uuid_time.lo  uuid.h
config.sub     libuuid_la-copy.o       libuuid_la-uuid_time.o   uuid.pc
configure      libuuid_la-gen_uuid.lo  ltmain.sh                uuid.pc.in
configure.ac   libuuid_la-gen_uuid.o   Makefile                 uuidP.h
copy.c         libuuid_la-isnull.lo    Makefile.am              uuid_time.c
COPYING        libuuid_la-isnull.o     Makefile.in
depcomp        libuuid_la-pack.lo      missing
michael@ubuntu:~/git/libuuid-.3$ vim ./test_uuid.c 
michael@ubuntu:~/git/libuuid-.3$ gcc test_uuid.c -o test_uuid
/usr/bin/ld: /tmp/ccRUh9Vk.o: in function `test_uuid':
test_uuid.c:(.text+0x2d): undefined reference to `uuid_parse'
/usr/bin/ld: /tmp/ccRUh9Vk.o: in function `main':
test_uuid.c:(.text+0x10a): undefined reference to `uuid_generate'
/usr/bin/ld: test_uuid.c:(.text+0x120): undefined reference to `uuid_unparse'
/usr/bin/ld: test_uuid.c:(.text+0x1b7): undefined reference to `uuid_type'
/usr/bin/ld: test_uuid.c:(.text+0x1cc): undefined reference to `uuid_variant'
/usr/bin/ld: test_uuid.c:(.text+0x226): undefined reference to `uuid_generate_random'
/usr/bin/ld: test_uuid.c:(.text+0x23c): undefined reference to `uuid_unparse'
/usr/bin/ld: test_uuid.c:(.text+0x2d3): undefined reference to `uuid_type'
/usr/bin/ld: test_uuid.c:(.text+0x2e8): undefined reference to `uuid_variant'
/usr/bin/ld: test_uuid.c:(.text+0x35e): undefined reference to `uuid_generate_time'
/usr/bin/ld: test_uuid.c:(.text+0x374): undefined reference to `uuid_unparse'
/usr/bin/ld: test_uuid.c:(.text+0x40b): undefined reference to `uuid_type'
/usr/bin/ld: test_uuid.c:(.text+0x420): undefined reference to `uuid_variant'
/usr/bin/ld: test_uuid.c:(.text+0x4b1): undefined reference to `uuid_time'
/usr/bin/ld: test_uuid.c:(.text+0x4ff): undefined reference to `uuid_parse'
/usr/bin/ld: test_uuid.c:(.text+0x515): undefined reference to `uuid_compare'
/usr/bin/ld: test_uuid.c:(.text+0x546): undefined reference to `uuid_clear'
/usr/bin/ld: test_uuid.c:(.text+0x552): undefined reference to `uuid_is_null'
/usr/bin/ld: test_uuid.c:(.text+0x58d): undefined reference to `uuid_copy'
/usr/bin/ld: test_uuid.c:(.text+0x5a3): undefined reference to `uuid_compare'
 exit status
michael@ubuntu:~/git/libuuid-.3$ cd /usr/local/lib
michael@ubuntu:/usr/local/lib$ ls
lib3ds-
lib3ds-  lib3ds.so  libuuid.so    pkgconfig
lib3ds.a           libuuid.a  libuuid.so.
michael@ubuntu:/usr//
michael@ubuntu:~/git/libuuid-.3$ gcc test_uuid.c -luuid -o test_uuid
michael@ubuntu:~/git/libuuid-.3$ ls
aclocal.m4     gen_uuid.c              libuuid_la-pack.o        pack.c
all-io.h       install-sh              libuuid_la-parse.lo      parse.c
c.h            isnull.c                libuuid_la-parse.o       randutils.c
clear.c        libtool                 libuuid_la-randutils.lo  randutils.h
compare.c      libuuid.la              libuuid_la-randutils.o   stamp-h1
config.guess   libuuid_la-clear.lo     libuuid_la-unpack.lo     test_uuid
config.h       libuuid_la-clear.o      libuuid_la-unpack.o      test_uuid.c
config.h.in    libuuid_la-compare.lo   libuuid_la-unparse.lo    unpack.c
config.log     libuuid_la-compare.o    libuuid_la-unparse.o     unparse.c
config.status  libuuid_la-copy.lo      libuuid_la-uuid_time.lo  uuidd.h
config.sub     libuuid_la-copy.o       libuuid_la-uuid_time.o   uuid.h
configure      libuuid_la-gen_uuid.lo  ltmain.sh                uuid.pc
configure.ac   libuuid_la-gen_uuid.o   Makefile                 uuid.pc.in
copy.c         libuuid_la-isnull.lo    Makefile.am              uuidP.h
COPYING        libuuid_la-isnull.o     Makefile.in              uuid_time.c
depcomp        libuuid_la-pack.lo      missing
michael@ubuntu:~/git/libuuid-.3$ ./test_uuid 
UUID generate = 53ead8bd-e562-4e79-bf6a-4e7cbf4c331d
UUID: 53ead8bde5624e79bf6a4e7cbf4c331d
UUID type =

UUID random string = dacba404--47c3-b8de-f451f843b849
UUID: dacba404235047c3b8def451f843b849
UUID type =

UUID string = 6c7dffbe-d07d-11e9-9d41-000c2977e04e
UUID time: 6c7dffbed07d11e99d41000c2977e04e
UUID type = 
UUID

UUID parse and compare succeeded.
UUID clear and is null succeeded.
UUID copy and compare succeeded.
84949cc5--4a84-895b-354c584a981b is valid, OK
84949CC5--4A84-895B-354C584A981B is valid, OK
84949cc5--4a84-895b-354c584a981bc is invalid, OK
84949cc5--4a84-895b-354c584a981 is invalid, OK
84949cc5x4701-4a84-895b-354c584a981b is invalid, OK
84949cc504701-4a84-895b-354c584a981b is invalid, OK
84949cc5-470104a84-895b-354c584a981b is invalid, OK
84949cc5--4a840895b-354c584a981b is invalid, OK
84949cc5--4a84-895b0354c584a981b is invalid, OK
g4949cc5--4a84-895b-354c584a981b is invalid, OK
84949cc5--4a84-895b-354c584a981g is invalid, OK
michael@ubuntu:~/git/libuuid-.3$ 

  

  • crossguid

  

  crossguid则为我们提供了CMakeLists.txt,方便我们使用cmake的方式来构建,构建成功后会生成一个libcrossguid.a 静态库和测试程序 crossguid-test ,全部的终端执行如下:

 Shell Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
michael@ubuntu:~$ cd ./git/crossguid-master/
michael@ubuntu:~/git/crossguid-master$ ls
android     cmake           crossguid.pc.in  LICENSE    src
android.sh  CMakeLists.txt  include          README.md  test
michael@ubuntu:~/git/crossguid-master$ mkdir build
michael@ubuntu:~/git/crossguid-master$ cd ./build/
michael@ubuntu:~/git/crossguid-master/build$ cmake --version
cmake version

CMake suite maintained and supported by Kitware (kitware.com/cmake).
michael@ubuntu:~/git/crossguid-master/build$ cmake ..
-- The C compiler identification 
-- The CXX compiler identification 
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Found LibUUID: /usr/lib/x86_64-linux-gnu/libuuid.so (found version "2.32.0") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/michael/git/crossguid-master/build
michael@ubuntu:~/git/crossguid-master/build$ make
Scanning dependencies of target crossguid
[ %] Building CXX object CMakeFiles/crossguid.dir/src/guid.cpp.o
[ %] Linking CXX static library libcrossguid.a
[ %] Built target crossguid
Scanning dependencies of target crossguid-test
[ %] Building CXX object CMakeFiles/crossguid-test.dir/test/TestMain.cpp.o
[ %] Building CXX object CMakeFiles/crossguid-test.dir/test/Test.cpp.o
[%] Linking CXX executable crossguid-test
[%] Built target crossguid-test
michael@ubuntu:~/git/crossguid-master/build$ make install
[ %] Built target crossguid
[%] Built target crossguid-test
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/libcrossguid.a
CMake Error at cmake_install.cmake: (file):
  file INSTALL cannot copy file
  "/home/michael/git/crossguid-master/build/libcrossguid.a" to
  "/usr/local/lib/libcrossguid.a".

make: *** [Makefile:
michael@ubuntu:~/git/crossguid-master/build$ ls
CMakeCache.txt  cmake_install.cmake  crossguid-test  Makefile
CMakeFiles      crossguid.pc         libcrossguid.a
michael@ubuntu:~/git/crossguid-master/build$ ./crossguid-test 
66ea935c-730c--82b3-f12424544a5b
73cecead-39c4--8a7e-029df3629f28
82aea220-ad0b-41d7-8c83-668a31fdcb47
All tests passed!
michael@ubuntu:~/git/crossguid-master/build$ 

  具体函数使用请参考官方文档,本文到此为止。

UUID生成库libuuid和crossguid的更多相关文章

  1. UUID 生成(源代码编译)

    根据定义,UUID(Universally Unique IDentifier,也称GUID)在时间和空间都是唯一的.为保证空间的唯一性,每个UUID使用了一个48位的值来记录,一般是计算机的网卡地址 ...

  2. 一个UUID生成算法的C语言实现 --- WIN32版本 .

    一个UUID生成算法的C语言实现——WIN32版本   cheungmine 2007-9-16   根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...

  3. js页码生成库,一个适合前后端分离的页码生成器

    原文:js页码生成库,一个适合前后端分离的页码生成器 前言 上星期写的任务里面有需要进行分页的处理,git搜索了一番,没有觉得合适的,于是自己临时写了个分页的算法. 然后等闲下来的时候,决定把分页进行 ...

  4. [C#] BarcodeLib -- 一个精简而不失优雅的条形码生成库

    BarcodeLib -- 一个精简而不失优雅的条形码生成库 引言 在百度进行“C# 条形码”等类似关键字搜索的时候,基本上是使用 ZXing 类库进行条形码的生成.今天我所介绍的是另一款类库 Bar ...

  5. java自带uuid生成

    java自带uuid生成UUID.randomUUID().toString()

  6. 二维码js生成库

    jr-qrcode 把字符串生成二维码,并以Base64 URL形式输出. 支持白色二维码,即反色二维码. 兼容性 插件使用了H5的canvas特性进行二维码绘制,最后输出base64 url,因此本 ...

  7. 一个UUID生成算法的C语言实现——WIN32版本

    源: 一个UUID生成算法的C语言实现——WIN32版本

  8. BarcodeLib -- 一个精简而不失优雅的条形码生成库

    BarcodeLib -- 一个精简而不失优雅的条形码生成库 引言 在百度进行“C# 条形码”等类似关键字搜索的时候,基本上是使用 ZXing 类库进行条形码的生成.今天我所介绍的是另一款类库 Bar ...

  9. UUID 生成32位随机串

    java通过jdk自带的UUID,生成32位的随机串 private static String generate_UUID() { UUID uuid=UUID.randomUUID(); Stri ...

随机推荐

  1. django学习-数据库配置-创建模型

    数据库配置 在mysite/settings.py中,包含了django项目设置的python模块 通常,这个配置文件使用SQLite作为默认数据库.如果你不熟悉数据库,或者只是想尝试下django, ...

  2. GAN与VAE

    经典算法·GAN与VAE Generative Adversarial Networks 及其变体 生成对抗网络是近几年最为经典的生成模型的代表工作,Goodfellow的经典工作.通过两个神经网络结 ...

  3. VIJOS-P1232 核电站问题

    VIJOS-P1232 核电站问题 JDOJ 1373 https://neooj.com/oldoj/problem.php?id=1373 题目描述         一个核电站有N个放核物质的坑, ...

  4. JDOJ 1152 是否是素数

    1152: 是否是素数 https://neooj.com:8082/oldoj/problem.php?id=1152 题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. ...

  5. C++面向对象程序设计学习笔记(2)

    C++在非面向对象方面的扩充 C++向下兼容C语言,因此C语言中的语法在C++中依然成立 输入输出 C++添加了标准输入流对象cin和标准输出流对象cout来进行输入输出, 例: #include&l ...

  6. Apex 中插入更新数据的事件执行顺序

    在使用 Apex 代码插入或更新数据的时候,若干事件会被按顺序执行.了解这些顺序可以提高调试程序的效率,也可以避免不必要的错误. 可以参考官方文档. 事件的执行顺序 从数据库中读取要更新的数据记录或初 ...

  7. The 2019 China Collegiate Programming Contest Harbin Site

    题解: https://files.cnblogs.com/files/clrs97/HarbinEditorialV2.zip Code: A. Artful Paintings /* let x= ...

  8. 洛谷p1137旅行计划

    题面 关于拓扑排序 因为这好几次考试的题目里都有在DAG中拓扑排序求最长/短路 txt说它非常的好用 就找了个题做了下 拓扑排序就是寻找图中所有的入度为零的点把他入队 然后再枚举它所有的连到的点,只要 ...

  9. java web开发入门八(ssm整合)基于intellig idea

    ssm整合 一.导入相关包 二.开发流程 1.写entity package com.eggtwo.euq.entity; import java.io.Serializable; import ja ...

  10. 强大的Scala模式匹配

    用过Scala的模式匹配,感觉Java的弱爆了.Scala几乎可以匹配任何数据类型,如果默认的不能满足你的要求,你可以自定义模式匹配. 介绍Scala的模式匹配前,我们先了解清楚unapply()与u ...