错误:“IOV_MAX”未声明(首次在此函数中使用)

error: ‘IOV_MAX’ undeclared (first use in this function)

本文关键字:函数 IOV MAX 未声明 错误      更新时间:2023-10-16

我正在尝试安装 memcached-1.2.8-repcached-2.2.1

运行make后出现以下错误:

$ make  all-recursive 
make[1]: Entering directory `/usr/local/src/pro/memcached-1.2.8-repcached-2.2.1'     
Making all in doc
make[2]: Entering directory `/usr/local/src/pro/memcached-1.2.8-repcached-2.2.1/doc'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/local/src/pro/memcached-1.2.8-repcached-2.2.1/doc'
make[2]: Entering directory `/usr/local/src/pro/memcached-1.2.8-repcached-2.2.1'
gcc -DHAVE_CONFIG_H -I.  -DNDEBUG   -g -O2 -MT memcached-memcached.o -MD -MP -MF 
.d eps/memcached-memcached.Tpo -c -o memcached-memcached.o `test -f 'memcached.c' || echo './'`memcached.c
memcached.c: In function ‘add_iov’:
memcached.c:697: error: ‘IOV_MAX’ undeclared (first use in this function)
memcached.c:697: error: (Each undeclared identifier is reported only once
memcached.c:697: error: for each function it appears in.)
make[2]: *** [memcached-memcached.o] Error 1     
make[2]: Leaving directory `/usr/local/src/pro/memcached-1.2.8-repcached-2.2.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/pro/memcached-1.2.8-repcached-2.2.1'
make: *** [all] Error 2

操作系统 : Centos5.7 64位

GCC-4.1.2-51.EL5

gcc-c++-4.1.2-51.el5

libgcc-4.1.2-51.el5

gcc 中的IOV_MAX有什么问题吗,文件头......等。?

你应该

yum remove libevent2-devel

yum install libevent libevent-devel

这表示包含文件或包含路径或环境中存在缺陷。

应该如何定义它很简单:

memcached.c第 33 行应定义__need_IOV_MAX
memcached.c第 42 行包括stdio.h
stdio.h(无论如何在我的系统上(第 161 行包含bits/stdio_lim.h
stdio_lim.h的最后一行(第 42-43 行(应定义它:

#if defined __need_IOV_MAX && !defined IOV_MAX
# define IOV_MAX 1024
#endif

我尝试构建memcached,但是它对libevent的依赖方式有些混乱。 这是 Fedora 15 上configure的最后几行:

...
checking for a BSD-compatible install... /usr/bin/install -c
checking for libevent directory... configure: error: libevent is required.
You can get it from http://www.monkey.org/~provos/libevent/
      If it's already installed, specify its path using --with-libevent=/dir/
[wally@lenovotower memcached-1.2.8-repcached-2.2.1]$ rpm -q libevent
libevent-2.0.10-2.fc15.i686
[wally@lenovotower memcached-1.2.8-repcached-2.2.1]$ 

但是/usr/...任何地方都没有event.h.

如果您在 Ubuntu 12.10(可能还有其他版本(上编译时遇到同样的情况,则需要安装 libevent1-dev 包。