UUID 生成(源代码编译)

根据定义,UUID(Universally Unique IDentifier,也称GUID)在时间和空间都是唯一的。为保证空间的唯一性,每个UUID使用了一个48位的值来记录,一般是计算机的网卡地址。为保证时间上的唯一性,每个UUID具有一个60位的时间戳(timestamp)。这个时间戳表示自公元1582年(绝对不是1852,这是《COM技术内幕》,1999年3月第1版第89页中的一个错误)10月15号00:00:00:00以来的时间,是以100纳秒为单位的时间间隔。1纳秒(ns)=10-9秒(s)。UUID算法可以保证至大约公元3400年仍然唯一。UUID的C语言结构定义如下:
 
typedef struct _uuid_t
{
     unsigned long      data1;       
     unsigned short     data2;
     unsigned short     data3;
     unsigned char      data4[8];
} uuid_t;
 
它的结构大小为16个字节。即sizeof(uuid_t)==16为TRUE。写成16进制字符串的格式,一般为:
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
 
上面的字符串形式,占用36个字符,不包括结尾空字符’/0’。所以,要想容纳一个UUID字符串,必须声明为一个char[36+1]的字符数组。
 
一、libuuid的下载
 
http://sourceforge.net/projects/libuuid/
 
二、解压
 
tar -zxvf libuuid-1.0.3.tar.gz
 
压缩:
  -命令格式:tar  -zcvf   压缩文件名.tar.gz   被压缩文件名
解压缩:
  -命令格式:tar  -zxvf   压缩文件名.tar.gz

三、编译

  -cd 到解压后的目录

  -1.  ./configure 

  -2. make 

  -3. make install 

注意:

  -./configure 

  -不指定prefix,则可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib

  -配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share

  -不指定prefix可能会在make install时候,发生/usr /local/bin 没有权限的错误

eg:

  - ./configure  --prefix=/home/user/Neo/libuuid

  - make install 后,会在/home/user/Neo/libuuid(如果自己指定了生成目录), 生成 ./include ./lib 两目录

  - 在该目录中有uuid.h 和 各种类型的库(libuuid.a libuuid.so -> xxx , 等等)

四、使用

  -uuid.c

#include <stdio.h>
#include "./include/uuid/uuid.h"
 
int main(int argc, char **argv)
{
    uuid_t uuid;
    char str[36];
 
    uuid_generate(uuid);
    uuid_unparse(uuid, str);
 
    printf("%s\n", str);
 
    return 0;
}

 

在Linux下编译时需要链接uuid库

gcc uuid.c -luuid 

  -如果没有指定uuid的库的路径,则编译器会在/user/bin 目录下去寻找

  -如果没有,可以自己指定库所在的路径

gcc uuid.c -L/aaa/bbb/ccc -luuid

  -假设uuid库放在/aaa/bbb/ccc目录下

五、卸载

  -你要卸载这个程序,要么在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall)

  -要么去上述目录里面把相关的文件一个个手工删掉。

 

参考:

  -http://zhidao.baidu.com/link?url=QrVtU8i_iec8Qbv4DcEGjMACWWBidQ4PgEDHzIB1xybwAaEPXY9GWzFpcsGKB6T-taSsMepoQHi9E0ayRdy_7K(./configure --prefix)

  -http://www.cnblogs.com/wangf/archive/2012/04/28/2474579.html(编译时链接库)

  -http://www.cnblogs.com/lidabo/archive/2013/12/20/3483128.html(uuid生成算法)

  -http://www.cnblogs.com/xiehy/archive/2010/09/13/1824776.html(解压)

  -http://www.cnblogs.com/Daniel-G/p/3987320.html(uuid 的使用)

 

 

posted @ 2015-11-05 22:06  Neo_Lc  阅读(7109)  评论(0编辑  收藏  举报