UUID生成庫libuuid和crossguid


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- 1 . 0 . 3 /
michael@ubuntu:~/git/libuuid-
1 . 0 .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-
1 . 0 .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 
length  of command line arguments...  1572864
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-
1 . 0 .3$ make
make  all-am
make[
1 ]: 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 
2 >& 1
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 
2 >& 1
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 
2 >& 1
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:
33 ,
                 from /usr/include/stdio.h:
27 ,
                 from gen_uuid.c:
46 :
/usr/include/features.h:
184 : 3 : 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:
297 : 10 : warning: implicit declaration of function  'flock' ; did you mean  'clock' ? [-Wimplicit-function-declaration]
   
while  ( flock (state_fd, LOCK_EX) <  0 ) {
          ^~~~~
          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 
2 >& 1
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 
2 >& 1
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-
pack .lo -MD -MP -MF .deps/libuuid_la- pack .Tpo -c  pack .c -o libuuid_la- pack .o >/dev/null  2 >& 1
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 
2 >& 1
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-
unpack .lo -MD -MP -MF .deps/libuuid_la- unpack .Tpo -c  unpack .c -o libuuid_la- unpack .o >/dev/null  2 >& 1
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 
2 >& 1
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 
2 >& 1
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 
2 >& 1
mv -f .deps/libuuid_la-randutils.Tpo .deps/libuuid_la-randutils.Plo
/bin/bash ./libtool  --tag=CC   --mode=
link  gcc -I. -g -O2 -version-info  1 : 0 : 0   -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: 
link : gcc -shared  -fPIC -DPIC  .libs/libuuid_la-clear.o .libs/libuuid_la-compare.o .libs/libuuid_la-copy.o .libs/libuuid_la-gen_uuid.o .libs/libuuid_la-isnull.o .libs/libuuid_la- pack .o .libs/libuuid_la-parse.o .libs/libuuid_la- unpack .o .libs/libuuid_la-unparse.o .libs/libuuid_la-uuid_time.o .libs/libuuid_la-randutils.o    -O2   -Wl,-soname -Wl,libuuid.so. 1  -o .libs/libuuid.so. 1 . 0 . 0
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[
1 ]: Leaving directory  '/home/michael/git/libuuid-1.0.3'
michael@ubuntu:~/git/libuuid-
1 . 0 .3$ make install
make[
1 ]: 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.
1 . 0 . 0  /usr/ local /lib/libuuid.so. 1 . 0 . 0
/usr/bin/install: cannot create regular file 
'/usr/local/lib/libuuid.so.1.0.0' : Permission denied
make[
1 ]: *** [Makefile: 446 : install-libLTLIBRARIES] Error  1
make[
1 ]: Leaving directory  '/home/michael/git/libuuid-1.0.3'
make: *** [Makefile:
906 : install-am] Error  2
michael@ubuntu:~/git/libuuid-
1 . 0 .3$ sudo make install
[sudo] password 
for  michael: 
make[
1 ]: 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.
1 . 0 . 0  /usr/ local /lib/libuuid.so. 1 . 0 . 0
libtool: install: (cd /usr/
local /lib && { ln - s  -f libuuid.so. 1 . 0 . 0  libuuid.so. 1  || { rm -f libuuid.so. 1  && ln - s  libuuid.so. 1 . 0 . 0  libuuid.so. 1 ; }; })
libtool: install: (cd /usr/
local /lib && { ln - s  -f libuuid.so. 1 . 0 . 0  libuuid.so || { rm -f libuuid.so && ln - s  libuuid.so. 1 . 0 . 0  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: 
chmod   644  /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(
1 and  ld.so( 8 ) manual pages.
----------------------------------------------------------------------
 /bin/
mkdir  -p  '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -
m   644  uuid.pc  '/usr/local/lib/pkgconfig'
 /bin/
mkdir  -p  '/usr/local/include/uuid'
 /usr/bin/install -c -
m   644  uuid.h  '/usr/local/include/uuid'
make[
1 ]: Leaving directory  '/home/michael/git/libuuid-1.0.3'
michael@ubuntu:~/git/libuuid-
1 . 0 .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-
1 . 0 .3$ vim ./test_uuid.c 
michael@ubuntu:~/git/libuuid-
1 . 0 .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 '
collect2: error: ld returned  1   exit  status
michael@ubuntu:~/git/libuuid-
1 . 0 .3$ cd /usr/ local /lib
michael@ubuntu:/usr/
local /lib$ ls
lib3ds-
1 .so. 3       lib3ds.la  libuuid.la    libuuid.so. 1 . 0 . 0   python3. 6
lib3ds-
1 .so. 3 . 0 . 0   lib3ds.so  libuuid.so    pkgconfig
lib3ds.a           libuuid.a  libuuid.so.
1   python2. 7
michael@ubuntu:/usr/
local /lib$ cd ~/git/libuuid- 1 . 0 . 3 /
michael@ubuntu:~/git/libuuid-
1 . 0 .3$ gcc test_uuid.c -luuid -o test_uuid
michael@ubuntu:~/git/libuuid-
1 . 0 .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-
1 . 0 .3$ ./test_uuid 
UUID generate = 53ead8bd-e562-4e79-bf6a-4e7cbf4c331d
UUID: 53ead8bde5624e79bf6a4e7cbf4c331d
UUID type = 
4 , UUID variant =  1

UUID random string = dacba404-
2350 -47c3-b8de-f451f843b849
UUID: dacba404235047c3b8def451f843b849
UUID type = 
4 , UUID variant =  1

UUID string = 6c7dffbe-d07d-11e9-9d41-000c2977e04e
UUID 
time : 6c7dffbed07d11e99d41000c2977e04e
UUID type = 
1 , UUID variant =  1
UUID 
time  is: ( 1567757272 119699 ): Fri Sep   6   16 : 07 : 52   2019

UUID parse 
and  compare succeeded.
UUID clear 
and  is null succeeded.
UUID copy 
and  compare succeeded.
84949cc5-
4701 -4a84-895b-354c584a981b is valid, OK
84949CC5-
4701 -4A84-895B-354C584A981B is valid, OK
84949cc5-
4701 -4a84-895b-354c584a981bc is invalid, OK
84949cc5-
4701 -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-
4701 -4a840895b-354c584a981b is invalid, OK
84949cc5-
4701 -4a84-895b0354c584a981b is invalid, OK
g4949cc5-
4701 -4a84-895b-354c584a981b is invalid, OK
84949cc5-
4701 -4a84-895b-354c584a981g is invalid, OK
michael@ubuntu:~/git/libuuid-
1 . 0 .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 
3 . 12 . 1

CMake suite maintained 
and  supported by Kitware (kitware.com/cmake).
michael@ubuntu:~/git/crossguid-master/build$ cmake ..
-- The C compiler identification 
is  GNU  8 . 2 . 0
-- The CXX compiler identification 
is  GNU  8 . 2 . 0
-- 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
20 %] Building CXX  object  CMakeFiles/crossguid. dir /src/guid.cpp.o
40 %] Linking CXX static library libcrossguid.a
40 %] Built target crossguid
Scanning dependencies of target crossguid-test
60 %] Building CXX  object  CMakeFiles/crossguid-test. dir /test/TestMain.cpp.o
80 %] Building CXX  object  CMakeFiles/crossguid-test. dir /test/Test.cpp.o
[
100 %] Linking CXX executable crossguid-test
[
100 %] Built target crossguid-test
michael@ubuntu:~/git/crossguid-master/build$ make install
40 %] Built target crossguid
[
100 %] Built target crossguid-test
Install the project...
-- Install configuration: 
"Release"
-- Installing: /usr/local/lib/libcrossguid.a
CMake Error at cmake_install.cmake:
41  ( file ):
  
file  INSTALL cannot  copy   file
  
"/home/michael/git/crossguid-master/build/libcrossguid.a"  to
  
"/usr/local/lib/libcrossguid.a" .


make: *** [Makefile:
118 : install] Error  1
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-
4518 -82b3-f12424544a5b
73cecead-39c4-
4942 -8a7e-029df3629f28
82aea220-ad0b-41d7-8c83-668a31fdcb47
All tests passed!
michael@ubuntu:~/git/crossguid-master/build$ 

  具體函數使用請參考官方文檔,本文到此為止。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM