|
|
我安装的是VMware-workstation-5.5.3-34685
昨天升级内核到2.6.19-1.2895.fc6,运行vmware-config.pl就会出错
不知道其他人vmware有没有遇到这个问题
我是根据在运行vmware-config.pl过程中出错信息来修改的
首先安装内核对应的devel包
出错信息
include/linux/stddef.h:16: 错误:expected identifier before ‘false’
include/linux/stddef.h:16: 错误:expected `}' before ‘false’
include/linux/stddef.h:16: 错误:expected unqualified-id before ‘false’
include/linux/types.h:36: 错误:expected initializer before ‘bool’
/tmp/vmware-config17/vmmon-only/common/task.c:43: 错误:expected declaration before ‘}’ token
以下出错信息略
1.修改include/linux/stddef.h的15-18行
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H
#include <linux/compiler.h>
#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#ifdef __KERNEL__
/*enum { /*将这一段注释掉*/
false = 0,
true = 1
};*/
#undef offsetof
#ifdef __compiler_offsetof
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
#else
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
#endif /* __KERNEL__ */
#endif
2.修改include/linux/types.h第36行
//typedef _Bool bool;//将此行注释掉
3.include/linux/kernel.h:176: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printk_timed_ratelimit’
修改include/linux/kernel.h第176行为
extern int printk_timed_ratelimit(unsigned long *caller_jiffies,/*把bool改为int即可*/
unsigned int interval_msec);
4.修改vmware的编译内核模块的源文件(此部分是参考
http://www.chinalinuxpub.com/showthread.php?t=53439的)
cd /usr/lib/vmware/modules/source
tar -xvvf vmnet.tar
cd vmnet-only/
修改 bridge.c 的第1179行
if (skb->ip_summed == CHECKSUM_HW)
为
if (skb->ip_summed == CHECKSUM_PARTIAL)
修改 userif.c 的第632行
skb->ip_summed == CHECKSUM_HW && /* Without check sum */
为
skb->ip_summed == CHECKSUM_PARTIAL && /* Without check sum */
然后
cd ..
tar -cvf vmnet.tar vmnet-only
#vmware-config.pl
就可以了
以上是我做完之后在写的,有的地方可能不准确了,如果有什么其他问题可以发信给我
wranglergrey@gmail.com
或者跟帖提问 |
|