IT星球论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 111|回复: 0

CentOS7安装VMwareTools过程中报错导致hgfs下没有出现共享文件 ...

[复制链接]

2004

主题

1

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

优秀会员 助人为乐 辛勤工作 技术精英 多才多艺 优秀班竹 灌水天才 星球管理 宣传大使 灌水之王 财富勋章 版主勋章 动漫勋章 勤奋会员 论坛精英 PS高手 心 8 闪游皮肤 双鱼座 8★8➹ 志愿者 乖

发表于 2017-8-25 07:45:12 |显示全部楼层
Centos7安装VMwareTools过程中报错导致hgfs下没有出现共享文件 error: too many arguments to function ‘wait_on_bit’
error: too many arguments to function ‘wait_on_bit’
在VM上安装了CentOS虚拟机,想使用共享文件夹,安装VMwareTools,hgfs下找不到响应的目录,但是使用vmware-hgfsclient命令 却能看到我设置的共享目录.
仔细再进行了一遍检查,发现在安装VMwareTools时编译报错.
报错如下
[size=0.9em]Bash

CC [M]  /tmp/modconfig-71euqe/vmhgfs-only/page.o/tmp/modconfig-71euqe/vmhgfs-only/page.c: In function ‘HgfsWbRequestWait’:/tmp/modconfig-71euqe/vmhgfs-only/page.c:1649:23: warning: passing argument 3 of ‘wait_on_bit’ makes integer from pointer without a cast [enabled by default]                       TASK_UNINTERRUPTIBLE);                       ^In file included from include/linux/mmzone.h:9:0,                 from include/linux/gfp.h:5,                 from include/linux/mm.h:9,                 from include/linux/pagemap.h:7,                 from /tmp/modconfig-71euqe/vmhgfs-only/page.c:28:include/linux/wait.h:1044:1: note: expected ‘unsigned int’ but argument is of type ‘int (*)(void *)’wait_on_bit(void *word, int bit, unsigned mode)^/tmp/modconfig-71euqe/vmhgfs-only/page.c:1649:23: error: too many arguments to function ‘wait_on_bit’                       TASK_UNINTERRUPTIBLE);                       ^In file included from include/linux/mmzone.h:9:0,                 from include/linux/gfp.h:5,                 from include/linux/mm.h:9,                 from include/linux/pagemap.h:7,                 from /tmp/modconfig-71euqe/vmhgfs-only/page.c:28:include/linux/wait.h:1044:1: note: declared herewait_on_bit(void *word, int bit, unsigned mode)^make[2]: *** [/tmp/modconfig-71euqe/vmhgfs-only/page.o] Error 1make[2]: *** Waiting for unfinished jobs....make[1]: *** [_module_/tmp/modconfig-71euqe/vmhgfs-only] Error 2make[1]: Leaving directory `/usr/src/kernels/3.10.0-514.2.2.el7.x86_64'make: *** [vmhgfs.ko] Error 2make: Leaving directory `/tmp/modconfig-71euqe/vmhgfs-only'
通过查看后发现因为centos 7的Linux内核用的3.10版本,在函数 wait_on_bit_io()中有三个参数,而vmtool的代码在内核3.19后才用3个参数的wait_on_bit_io()函数,代码如下
[size=0.9em]vim

   1639 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)   1640    return wait_on_bit_io(&req->wb_flags,   1641                          PG_BUSY,   1642                          TASK_UNINTERRUPTIBLE);   1643 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)   1644    return wait_on_bit(&req->wb_flags,   1645                       PG_BUSY,   1646 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)   1647                       HgfsWbRequestWaitUninterruptible,   1648 #endif   1649                       TASK_UNINTERRUPTIBLE);   1650 #else
个人推测,在IT论坛linux版本中可能也会出现类是的问题,只要看看报错源码,如果是由于#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0),这种判断造成的报错,只要把宏改成当前的版本号,一般都能解决问题.
vmware-tools-distrib/lib/modules/source的目录下有不少tar文件,我是根据报错的提示
“/tmp/modconfig-71euqe/vmhgfs-only/page.c:1649:23: error: too many arguments to function ‘wait_on_bit’” 一个个去解压了找的
解压指令
tar xf vmhgfs.tar
修改目录下的page文件的1639行
[size=0.9em]vim

1639 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
改为如下↓
[size=0.9em]vim

1639 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
解压后修改完成打包指令
tar cf vmhgfs.tar vmhgfs-only
然后执行vmware-install.pl 问题解决
CentOS7安装VMwareTools过程中报错导致hgfs下没有出现共享文件 error: too many arguments to function ‘wait_on_bit’
该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部