2012-01-14 61 views
0

我想在CentOS 5.6中編譯imapfilter 2.4.1(https://github.com/lefcha/imapfilter)。我相信我有排序的所有依賴,但是當我運行make我得到:在CentOS 5.6中編譯imapfilter 2.4.1時出錯

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 

根據其他用戶的意見和文件修改日期,我相信這應該編譯。我猜我錯過了某處的圖書館。我會很感激任何幫助,我可以得到這一點。

回答

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的(或任何其他包盧阿頭)也是5.1?

+1

您證實了我對GCC的懷疑,不知道luaL_reg是什麼。這個問題可能是我使用了不正確的LUA版本。我強烈地感覺到我的問題是一個不正確的版本,所以我會將其標記爲公認的答案。不幸的是,我不得不暫時擱置這個項目,直到我有更多的空閒時間時才能驗證它。 – ofBits 2012-03-09 08:05:13