根据定义,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[];
 
    uuid_generate(uuid);
    uuid_unparse(uuid, str);
 
    printf("%s\n", str);
 
    return ;
}  

在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 的使用)

UUID 生成(源代码编译)的更多相关文章

  1. 3DSlicer源代码编译过程vs2008+windows xp [转]

    一 下载QT源代码编译 1.  简述   在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 ...

  2. [CLR via C#]1.1 将源代码编译成托管代码

    原文:[CLR via C#]1.1 将源代码编译成托管代码 1. 公共语言运行时(Common Language Runtime,CLR)是一种可由多种编程语言使用的"运行时". ...

  3. win7下从ruby源代码编译安装

    工作中需要在c++代码中嵌入ruby c api,然而在vs工程中编译失败,所以现在通过手动从源代码编译ruby寻找原因(之前使用rubyinstaller安装).   先从官网下载ruby 2.4. ...

  4. .NET Framwork 之 源代码编译成托管代码托管代码合并成程序集

    我们都知道,C#程序需要在 .NET Framework 的环境中运行. 一.程序运行所需的三个关键 1.IL(中间语言):编译器编译源代码时生成的代码. 2. Framework类库(Framewo ...

  5. 在 Mac OS X 环境中从源代码编译安装 FFmpeg

    最近因为一个项目要求,需要开发实时视频编解码功能,准备采用 FFmpeg 以 x264 方式进行实时的视频编解码.Windows 以及 Linux 环境下的 FFmpeg 动态库.头文件等资源都非常容 ...

  6. Apache Kafka-0.8.1.1源代码编译

    作者:过往记忆 | 新浪微博:左手牵右手TEL | 能够转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明博客地址:http://www.iteblog.com/文章标题:<Apac ...

  7. Linux 环境中从源代码编译安装 ReText 问题与解决

    从源代码编译安装 ReText 问题与解决 1. 如何安装 Python Markups 1.1 从 https://launchpad.net/python-markups 下载 Python Ma ...

  8. Win7+VS2010:mysql 源代码编译与调试

    win7+vs2010源代码编译mysql 近期因为在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制.眼下萌生了要研究一下mysql数据库源代码的想法.那么好吧,说干就干.首先我们 ...

  9. Windows下从源代码编译Skia

    在PPAPI里面画图,能够结合第三方的图形库.比方Cairo.Skia. Google Chrome.Chromium和Android都使用Skia作为画图引擎.我也来试试Skia,先过编译关. fo ...

随机推荐

  1. 在自定义的js验证规则中调用magento的VarienForm方法验证表单

    js部分<script type="text/javascript"> //<![CDATA[ var loginForm = new VarienForm('l ...

  2. 使用ionic与cordova(phonegap)进行轻量级app开发前的环境配置与打包安卓apk过程记录

     前言 有人说:"如果你恨一个人,就让ta去接触cordova(phonegap)",这是因为这里面的水很深,坑很多,真让人不是一般地发狂.或许有幸运的人儿基本顺顺利利就配置完环境 ...

  3. vs2010打开设计器出现错误

    vs2010打开设计器出现此界面,  错误多种,还有“未将对象引用设置到对象的实例”  ,我项目用到了第三方控件(没有安装,bin文件夹导入DLL文件,项目直接引用的DLL文件),看下面的堆栈信息,显 ...

  4. Struts2返回Json数据(使用Struts2插件)

    这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的&q ...

  5. eclipse中输入的中文为繁体的问题

    今天在eclipse中编写注释的时候发现,输入的中文都为繁体,且只在eclipse编辑器中为繁体,切换到网页中则为正常. 最后发现,竟然是输入法的shift+ctrl+F快捷键和eclipse的冲突. ...

  6. CDH(cdh5.7) 上集成 kafka

    CDH 可以在线下载: 离线安装

  7. c++:类中的static成员

    首先静态成员可以是public的,也可以是private的,只需在一般的变量.函数声明语句前加上static关键字即可声明一个static变量. 类中的静态成员存在与任何对象之外,所有该类对象的共享一 ...

  8. Windows下C++多线程同步与互斥简单运用

    1.  互斥量,Mutex #include <Windows.h> #include <iostream> using namespace std; DWORD WINAPI ...

  9. Linux学习sed命令

    sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送 ...

  10. OC语法3——点语法,self关键字

    点语法:   为了给程序员提供便捷,OC中也引入了点语法.不过它和Java中点语法的意义是完全不同的. 在Java中无论调用任何方法,还是访问public类型的成员变量都是用点语法(.号). 而在OC ...