linux下编译heartbeat2.1.3出错及解决方案

环境:

RHEl 5.5
Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

heartbeat 2.1.3

libnet 1.1.2

在编译heartbeat时,./ConfigureMe configure执行成功,在执行make命令时出错:

cc1: warnings being treated as errors

hbaping.c: In function ‘hbaping_new’:

hbaping.c:241: warning: ISO C90 forbids mixed declarations and code

hbaping.c: In function ‘hbaping_read’:

hbaping.c:326: warning: passing argument 2 of ‘msg2wirefmt’ from incompatible pointer type

gmake[4]: * [hbaping.lo] Error 1

gmake[4]: Leaving directory `/usr/local/src/install_lvs/heartbeat-2.1.3/lib/plugins/HBcomm’

gmake[3]: * [all-recursive] Error 1

gmake[3]: Leaving directory `/usr/local/src/install_lvs/heartbeat-2.1.3/lib/plugins/HBcomm’

gmake[2]: * [all-recursive] Error 1

gmake[2]: Leaving directory `/usr/local/src/install_lvs/heartbeat-2.1.3/lib/plugins’

gmake[1]: * [all-recursive] Error 1

gmake[1]: Leaving directory `/usr/local/src/install_lvs/heartbeat-2.1.3/lib’

make: * [all-recursive] Error 1
 

 

解决方案:

注:三种方法是独立的

 

方法一(未成功):

去除Makefile中的-Werror参数

CFLAGS = -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 -funsigned-char
改为
CFLAGS = -g -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -ggdb3 -funsigned-char
 

保存退出,重新make。

方法二(未成功):

编辑lib/plugins/HBcomm/hbaping.c的326行,将

pkt = msg2wirefmt(nmsg, lenp);

改为

pkt = NULL;

保存退出,重新make。

方法三(亲测,成功通过)

cd lib/plugins/HBcomm/

mv hbaping.loT hbaping.lo

cd -

make

make install