在amazon linux上安装zmq的问题(无法找到uuid)

Ben*_*Ben 7 linux uuid amazon-ec2 zeromq

我正试图在EC2上组建一个AMI,目前我正在建设0mq.

最初,我在运行./configure时遇到了这个错误

checking for uuid_generate in -luuid... no
configure: error: cannot link with -luuid, install uuid-dev.
Run Code Online (Sandbox Code Playgroud)

我通过yum安装了e2fsprogs-devel和linux-utils,我认为它包含了所需的库,但仍然遇到上述错误.我随后用yum安装了uuid-devel并且没有进一步.

然后,我创建了一个链接如下:

sudo ln -s /lib64/libuuid.so.1.3.0 /lib64/libuuid.so
Run Code Online (Sandbox Code Playgroud)

现在./configure很快就完成了,但是当我运行make时出现错误

[...]
CXX    libzmq_la-signaler.lo
CXX    libzmq_la-socket_base.lo
In file included from socket_base.cpp:50:
uuid.hpp:31:23: error: uuid/uuid.h: No such file or directory
In file included from socket_base.cpp:50:
uuid.hpp:92: error: 'uuid_t' in namespace '::' does not name a type
make[2]: *** [libzmq_la-socket_base.lo] Error 1
make[2]: Leaving directory `/home/this/infrastructure/zeromq2-2/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/this/infrastructure/zeromq2-2/src'
make: *** [all-recursive] Error 1
Run Code Online (Sandbox Code Playgroud)

以下是/usr/include/uuid.h的开头,如果有用的话.

#ifndef __UUID_H__
#define __UUID_H__

/* workaround conflicts with system headers */
#define uuid_t       __vendor_uuid_t
#define uuid_create  __vendor_uuid_create
#define uuid_compare __vendor_uuid_compare
#include <sys/types.h>
#include <unistd.h>
#undef  uuid_t
#undef  uuid_create
#undef  uuid_compare
Run Code Online (Sandbox Code Playgroud)

我在这一点上很难过.

Bil*_*ain 19

正如https://bugzilla.redhat.com/show_bug.cgi?id=576296#c0所指出的,使用libuuid-devel代替uuid-devel,

$ sudo yum install libuuid-devel
Run Code Online (Sandbox Code Playgroud)

这为我解决了丢失的/usr/include/uuid/uuid.h文件.


Ben*_*Ben 7

最终,我通过跑步来满足依赖性

$ yum install uuid-devel
Run Code Online (Sandbox Code Playgroud)

另外值得注意的是,为了让libzmq链接到需要它的其他程序(例如Mongrel2),我不得不添加行

/usr/local/lib
Run Code Online (Sandbox Code Playgroud)

到/etc/ldconfig.so.conf并运行

$ ldconfig -v | grep zmq
Run Code Online (Sandbox Code Playgroud)

(如果你没有在输出中看到libzmq.so的条目,那么有些东西已关闭)

  • 在构建某些东西时,通常需要-devel(或Debian系统上的-dev)包,而不是仅仅安装二进制文件.这些包几乎总是与二进制包的名称相同,并在名称上添加了-devel或-dev. (2认同)