Linux下libuuid的安装和使用 一、UUID概述
UUID的含义是Universally Unique Identifier,它是软件构建的标准,也是开放软件基金会(Open Software Foundation,OSF)组织使用的分布式计算环境(DistributedComputingEnvironment,DCE)领域的一部分。
UUID是指在一台机器上生成的一个数字,保证在同一时间和空间的所有机器上都是唯一的。 一般来说,平台会提供生成的API。根据开放软件基金会(OSF)制定的标准进行估计,使用以太网卡地址、纳秒时间、芯片ID号和许多可能的数字。
UUID 是以下部分的组合: 1). 当前日期和时间。 UUID的第一部分与时间有关。 如果几秒后生成一个UUID,第一部分不同,其余部分相同。 2)、时钟顺序。 3)。 全球唯一的 IEEE 机器识别号。 如果有网卡,则从网卡的MAC地址获取。 如果没有网卡则通过其他方式获取。
UUID唯一的缺点是生成的结果字符串会比较长。 最常用的UUID标准是Google的GUID(GlobalsUniqueIdentifiers)。 在ColdFusion中php 生成uuid,您可以使用CreateUUID()函数轻松生成UUID。 其格式为:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx(8-4-4-16),其中每个x位是0-9a-f范围内的1。 十六的补数。 标准 UUID 格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)
2.Linux下安装libuuid库
第一种方法是在终端输入:sudoapt-getinstalluuid-dev,然后根据实践使用cmake进行编译。 cpp包含上午错误,找不到对应的函数; 但是使用g++模式就可以了,有点奇怪。
第二种是直接源码编译。 此时可以在系统/usr/local/include和/usr/local/lib中找到对应的头文件uuid.h和liuuid.so进行cmake编译。 具体编译步骤如下:
(1)下载源码压缩包:也可以到官网下载最新版本
(2)解压tar-xzvflibuuid-1.0.3.tar.gz,进入解压目录:终端输入./configure;make;makeinstall; 分三步完成安装。 安装完成后会提示安装在/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
#include
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-odemo,然后运行 ./demo。 如果你想在项目中使用这个库并且需要cmake编译php 生成uuid,可以编译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所在目录mkdirbuild,cd构建:输入以下命令
..
制作
经过一番操作,编译出可执行文件uuidtest,然后运行./uuidtest。