Linux下libuuid安装使用

                               Linux下libuuid安装使用

1、UUID概述

   UUID含义是通用唯一识别码(Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。

   UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID由以下几部分的组合:1)、当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。2)、时钟序列。3)、全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

    UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个x是0-9 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)

2、Linux下安装libuuid库

    第一种方式终端输入:sudo apt-get install uuid-dev ,但是根据实践再用cmake编译.cpp包含<uuid/uuid.h>时报错,找不到对应的函数;而使用g++方式则可以,有点怪。

   第二种直接源码编译,这样的话能在系统/usr/local/include和/usr/local/lib中找到对应头文件uuid.h和liuuid.so,便于cmake编译。具体编译步骤如下:

      (1)下载源码压缩包:http://nchc.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz,也可以进入官网下载最新版本http://nchc.dl.sourceforge.net/project/libuuid

     (2)解压tar -xzvf libuuid-1.0.3.tar.gz,进入解压目录:终端输入./configure; make; make install;这样三步完成安装,安装完成以后会提示安装在/usr/local/include和/usr/local/lib;接下来就可以放心些CMakeLists.txt了。

3、Linux下简单demo

  (1) 先列出一些常用的函数,在uuid.h文件中包含这些函数;

    void uuid_generate(uuid_t out); //最常用
    void uuid_generate_random(uuid_t out);
    void uuid_generate_time(uuid_t out);
    int uuid_generate_time_safe(uuid_t out);
    //比较两个uuid
    int uuid_compare(uuid_t uu1, uuid_t uu2) 
    //拷贝src到dst
    void uuid_copy(uuid_t dst, uuid_t src);
    //清除uu内容(清零)
    void uuid_clear(uuid_t uu);
    //判读uu是否为null
    int uuid_is_null(uuid_t uu);
    //解析in指向的字符串形式内容到uu
    int uuid_parse( char *in, uuid_t uu);
    //将uu内容解析为字符串,保存到out数组
    void uuid_unparse(uuid_t uu, char *out);
    void uuid_unparse_upper(uuid_t uu, char *out);
    void uuid_unparse_lower(uuid_t uu, char *out);
    //将基于时间创建的uu在的时间部分解析出来
    time_t uuid_time(uuid_t uu, struct timeval *ret_tv)
(2) 编写一个uuiddemo.cpp测试
#include <stdio.h>
#include <uuid/uuid.h>
int main(){
    uuid_t uu;
    char buf[16];
    uuid_generate_random(uu);
    uuid_unparse(uu, buf);
    printf(“%s”,buf);
    return 0;
}

运行则可以终端g++ uuiddemo.cpp -luuid -o demo,然后./demo运行。在工程中如果要用这个库而且是需要cmake编译,则可编写CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(uuidtest C CXX) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories( /usr/local/include)
file(GLOB TEST_SRC ${CMAKE_CURRENT_LIST_DIR}/uuiddemo.cpp)
set(TEST_COMPILE_CODE ${TEST_SRC})
add_executable(cmakefirst ${TEST_COMPILE_CODE})
target_link_libraries(uuidtest /usr/local/lib/libuuid.so)

  编写完成,然后cd到CMakeLists.txt所在目录 mkdir build,cd到build:输入如下指令

     cmake..

     make

     一顿操作之后编译出了可执行文件uuidtest,然后./uuidtest运行。

猜你喜欢

转载自blog.csdn.net/ouyangfushu/article/details/85101625
今日推荐