在CentOS 5.6中编译imapfilter 2.4.1时出错

时间:2012-01-14 02:37:42

标签: gcc compilation lua centos imap

我正在尝试在CentOS 5.6中编译imapfilter 2.4.1(https://github.com/lefcha/imapfilter)。我相信我已经对所有依赖项进行了排序,但是当我运行make时,我得到了:

make[1]: Entering directory `/home/src/imapfilter-2.4.1/src'
cc -Wall -O -DMAKEFILE_SHAREDIR='"/usr/local/share/imapfilter"' -c -o core.o core.c
core.c:41: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ifcorelib’
core.c: In function ‘ifcore_append’:
core.c:947: warning: implicit declaration of function ‘lua_strlen’
core.c: In function ‘luaopen_ifcore’:
core.c:1162: warning: implicit declaration of function ‘luaL_register’
core.c:1162: error: ‘ifcorelib’ undeclared (first use in this function)
core.c:1162: error: (Each undeclared identifier is reported only once
core.c:1162: error: for each function it appears in.)
make[1]: *** [core.o] Error 1
make[1]: Leaving directory `/home/src/imapfilter-2.4.1/src'
make: *** [all] Error 2

基于其他用户评论和文件修订日期,我确信这应该编译。我猜我在某个地方错过了一个图书馆。我会感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

从第一条错误消息开始:

core.c:41: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ifcorelib’

core.c的第41行是:

static const luaL_reg ifcorelib[] = {

来自gcc的隐秘消息意味着它对luaL_reg的内容一无所知,并认为它是变量名。然后,当在同一定义/声明中读取第二个变量名时,它会陷入恐慌。 luaL_reg应该像struct一样。

因此,您的问题似乎位于LUA开发标题中。可能你已经太老了甚至现代Lua包。

imapfilter的github自述文件说:

  

编译时间要求是Lua(版本5.1)

你确定你的lua是5.1而且lua-devel(或任何其他带有lua头的包)也是5.1吗?