今天在安装ipvsadm时遇到了错误(参考http://7567567.blog.51cto.com/706378/578289/)。
操作步骤如下:
ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux
cd ipvsadm-1.24
[root@ser6-51 ipvsadm-1.24]# make
报错:
<span style="background-color: rgb(255, 255, 255);"><span style="font-size: 14px;"><span style="font-family:Microsoft YaHei;">[root@ser6-51 ipvsadm-1.24]# make make -C libipvs make[1]: Entering directory `/download/ipvsadm-1.24/libipvs' gcc -Wall -Wunused -Wstrict-prototypes -g -O2 -I/usr/src/linux/include -DHAVE_NET_IP_VS_H -c -o libipvs.o libipvs.c In file included from libipvs.c:23: libipvs.h:14:23: error: net/ip_vs.h: No such file or directory In file included from libipvs.c:23: libipvs.h:119: error: expected ‘)’ before ‘fwmark’ libipvs.c:27: error: field ‘svc’ has incomplete type libipvs.c:28: error: field ‘dest’ has incomplete type libipvs.c: In function ‘ipvs_init’: libipvs.c:40: error: invalid application of ‘sizeof’ to incomplete type ‘struct ip_vs_getinfo’ libipvs.c:44: error: ‘IP_VS_SO_GET_INFO’ undeclared (first use in this function) libipvs.c:44: error: (Each undeclared identifier is reported only once libipvs.c:44: error: for each function it appears in.) libipvs.c: In function ‘ipvs_getinfo’: libipvs.c:56: error: invalid application of ‘sizeof’ to incomplete type ‘struct ip_vs_getinfo’ libipvs.c:57: error: ‘IP_VS_SO_GET_INFO’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_version’: libipvs.c:64: error: invalid use of undefined type ‘struct ip_vs_getinfo’ libipvs.c: In function ‘ipvs_flush’: libipvs.c:70: error: ‘IP_VS_SO_SET_FLUSH’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_add_service’: libipvs.c:79: error: ‘IP_VS_SO_SET_ADD’ undeclared (first use in this function) libipvs.c:79: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_update_service’: libipvs.c:87: error: ‘IP_VS_SO_SET_EDIT’ undeclared (first use in this function) libipvs.c:87: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_del_service’: libipvs.c:95: error: ‘IP_VS_SO_SET_DEL’ undeclared (first use in this function) libipvs.c:95: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_zero_service’: libipvs.c:103: error: ‘IP_VS_SO_SET_ZERO’ undeclared (first use in this function) libipvs.c:103: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_add_dest’: libipvs.c:109: error: dereferencing pointer to incomplete type libipvs.c:109: error: dereferencing pointer to incomplete type libipvs.c:112: error: ‘IP_VS_SO_SET_ADDDEST’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_update_dest’: libipvs.c:119: error: dereferencing pointer to incomplete type libipvs.c:119: error: dereferencing pointer to incomplete type libipvs.c:122: error: ‘IP_VS_SO_SET_EDITDEST’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_del_dest’: libipvs.c:129: error: dereferencing pointer to incomplete type libipvs.c:129: error: dereferencing pointer to incomplete type libipvs.c:132: error: ‘IP_VS_SO_SET_DELDEST’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_set_timeout’: libipvs.c:140: error: ‘IP_VS_SO_SET_TIMEOUT’ undeclared (first use in this function) libipvs.c:141: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_start_daemon’: libipvs.c:148: error: ‘IP_VS_SO_SET_STARTDAEMON’ undeclared (first use in this function) libipvs.c:149: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_stop_daemon’: libipvs.c:156: error: ‘IP_VS_SO_SET_STOPDAEMON’ undeclared (first use in this function) libipvs.c:157: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_get_services’: libipvs.c:166: error: dereferencing pointer to incomplete type libipvs.c:167: error: invalid application of ‘sizeof’ to incomplete type ‘ipvs_service_entry_t’ libipvs.c:167: error: invalid use of undefined type ‘struct ip_vs_getinfo’ libipvs.c:172: error: dereferencing pointer to incomplete type libipvs.c:172: error: invalid use of undefined type ‘struct ip_vs_getinfo’ libipvs.c:174: error: ‘IP_VS_SO_GET_SERVICES’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_cmp_services’: libipvs.c:189: error: dereferencing pointer to incomplete type libipvs.c:189: error: dereferencing pointer to incomplete type libipvs.c:193: error: dereferencing pointer to incomplete type libipvs.c:193: error: dereferencing pointer to incomplete type libipvs.c:197: error: dereferencing pointer to incomplete type libipvs.c:197: error: dereferencing pointer to incomplete type libipvs.c:201: error: dereferencing pointer to incomplete type libipvs.c:201: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_sort_services’: libipvs.c:208: error: dereferencing pointer to incomplete type libipvs.c:208: error: dereferencing pointer to incomplete type libipvs.c:209: error: invalid application of ‘sizeof’ to incomplete type ‘ipvs_service_entry_t’ libipvs.c: In function ‘ipvs_get_dests’: libipvs.c:218: error: dereferencing pointer to incomplete type libipvs.c:218: error: invalid application of ‘sizeof’ to incomplete type ‘ipvs_dest_entry_t’ libipvs.c:218: error: dereferencing pointer to incomplete type libipvs.c:224: error: dereferencing pointer to incomplete type libipvs.c:224: error: dereferencing pointer to incomplete type libipvs.c:225: error: dereferencing pointer to incomplete type libipvs.c:225: error: dereferencing pointer to incomplete type libipvs.c:226: error: dereferencing pointer to incomplete type libipvs.c:226: error: dereferencing pointer to incomplete type libipvs.c:227: error: dereferencing pointer to incomplete type libipvs.c:227: error: dereferencing pointer to incomplete type libipvs.c:228: error: dereferencing pointer to incomplete type libipvs.c:228: error: dereferencing pointer to incomplete type libipvs.c:231: error: ‘IP_VS_SO_GET_DESTS’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_cmp_dests’: libipvs.c:243: error: dereferencing pointer to incomplete type libipvs.c:243: error: dereferencing pointer to incomplete type libipvs.c:247: error: dereferencing pointer to incomplete type libipvs.c:247: error: dereferencing pointer to incomplete type libipvs.c: In function ‘ipvs_sort_dests’: libipvs.c:253: error: dereferencing pointer to incomplete type libipvs.c:253: error: dereferencing pointer to incomplete type libipvs.c:254: error: invalid application of ‘sizeof’ to incomplete type ‘ipvs_dest_entry_t’ libipvs.c: At top level: libipvs.c:259: error: expected ‘)’ before ‘fwmark’ libipvs.c: In function ‘ipvs_get_timeout’: libipvs.c:288: error: dereferencing pointer to incomplete type libipvs.c:293: error: ‘IP_VS_SO_GET_TIMEOUT’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_get_daemon’: libipvs.c:309: error: dereferencing pointer to incomplete type libipvs.c:315: error: ‘IP_VS_SO_GET_DAEMON’ undeclared (first use in this function) libipvs.c: In function ‘ipvs_strerror’: libipvs.c:357: error: ‘ipvs_get_service’ undeclared (first use in this function) make[1]: *** [libipvs.o] Error 1 make[1]: Leaving directory `/download/ipvsadm-1.24/libipvs' make: *** [libs] Error 2</span></span></span>
盲目得进行软连接,根本就没根据自己机器情况修正。
我进入/usr/src/kernels目录,发现根本什么文件都没有。
因此,应该先yum -y install kernel-devel。
安装完后,在/usr/src/kernels下看到了文件:
[root@ser6-51 kernels]# ls -ltr
total 4
lrwxrwxrwx 1 root root 34 Aug 26 10:49 2.6.32-431.el6.x86_64 -> /lib/modules/2.6.32-431.el6.x86_64
drwxr-xr-x 2 root root 4096 Aug 26 11:51 2.6.32-573.3.1.el6.x86_64
生成软连接:
ln -s /usr/src/kernels/2.6.32-573.3.1.el6.x86_64/ /usr/src/linux
注意,软连接时,需要提供2.6.32-573.3.1.el6.x86_64的绝对路径,如果直接进入/usr/src/kernels目录,这样软连接是不行的:
ln -s 2.6.32-573.3.1.el6.x86_64/ /usr/src/linux
否则,在/usr/src/linux下会看不到/usr/src/kernels/2.6.32-573.3.1.el6.x86_64/下的一些文件,编译时还是会报错。