构建 mvfs 时出错

构建 mvfs 时出错

我正在尝试构建mvfs,以便可以在 CentOS 6.4 机器上运行 IBM Rational ClearCase。我已安装所有依赖项,因此我 cd 到该mvfs_src文件夹​​并在运行时收到以下错误make

/var/adm/rational/clearcase/mvfs/mvfs_src/mvfs_linux_mvops.c: In function ‘mvop_linux_open_kernel’:
/var/adm/rational/clearcase/mvfs/mvfs_src/mvfs_linux_mvops.c:1454: error: implicit declaration of function ‘get_empty_filp’
cc1: warnings being treated as errors
/var/adm/rational/clearcase/mvfs/mvfs_src/mvfs_linux_mvops.c:1454: error: assignment makes pointer from integer without a cast
make[2]: *** [/var/adm/rational/clearcase/mvfs/mvfs_src/mvfs_linux_mvops.o] Error 1
make[1]: *** [_module_/var/adm/rational/clearcase/mvfs/mvfs_src] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.14.1.el6.x86_64'
make: *** [all] Error 2

我该如何解决?

答案1

作为提交 e81e3f4dca6c54116a24aec217d2c15c6f58ada5(进入 Linux v2.6.33),该函数get_empty_filp()变为内部函数并且不再导出到模块:

提交 e81e3f4dca6c54116a24aec217d2c15c6f58ada5
作者:Eric Paris
日期:2009 年 12 月 4 日星期五 15:47:36 -0500

    fs:将 get_empty_filp() 定义移至 internal.h

    已删除 fs/ 之外的所有 get_empty_filp() 用户。此补丁
    将定义从include/目录移动到internal.h,因此没有新的
    用户突然出现并删除了 EXPORT_SYMBOL。[…]

相同的提交似乎已被移植到 CentOS 内核 2.6.32-358.14.1.el6,因为它具有在中声明的相同函数fs/internal.h

linux-2.6.32-358.14.1.el6/fs/internal.h:88:extern struct file *get_empty_filp(void);

换句话说,mvfs它不仅过时了,甚至已经过时了对于 CentOS。我猜测解决这个问题的唯一方法是获取较新的mvfs版本(如果存在的话),或者......降级内核。

相关内容