在 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);
}
运行则可以终端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运行。
上一篇: __cpuid
推荐阅读
-
在 Ubuntu 下安装和初始化 Git,同时添加 SSH 密钥
-
在 Linux 中安装 mongodb,非常详细 - 四步、启动和关闭
-
在 Linux 上安装软件包时安装 apt 和 pip 的位置
-
在 CentOS 7 上安装和配置 Telnet 服务(使用非根用户登录)
-
在Linux系统下,使用命令解压zip文件
-
在Linux系统下安装和使用软件解压RAR文件的方法
-
在Win10 LTSC 2019系统上,如何安装和删除Linux子系统
-
在Linux环境下,如何使用mount命令挂载CDROM
-
在Linux系统下,实现将网盘挂载到本地的方法:使用rclone
-
使用insmod、lsmod和rmmod在Linux下操作模块