环境:
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