报错如下:
/var/lib/dkms/virtualbox/4.1.12/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.c:1451:38: 错误: ‘VM_RESERVED’未声明(在此函数内第一次使用)
其实,原因很简单,VM_RESERVED 从kernel 3.7开始被移除了。所以简单的解决方法就是加入以下define:
#ifndef VM_RESERVED
#define VM_RESERVED (VM_DONTEXPAND | VM_DONTDUMP)
#endif
对VirtualBox而言,修改文件
/usr/src/virtualbox-4.1.12/r0drv/linux/the-linux-kernel.h
加入以上代码即可。

标签: none

仅有一条评论

  1. Gao Gao

    发现其实也可以在c文件里面直接改,一个原理。
    /usr/src/virtualbox-4.1.12/r0drv/linux/memobj-r0drv-linux.c

    #if defined(VBOX_USE_INSERT_PAGE) && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
    rc = vm_insert_page(vma, ulAddrCur, pMemLnxToMap->apPages[iPage]);
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0)
    vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
    #else
    vma->vm_flags |= VM_RESERVED; /* This flag helps making 100% sure some bad stuff wont happen (swap, core, ++). */
    #endif

添加新评论