选择gcc版本编译vmware模块

选择gcc版本编译vmware模块

我使用的是 Ubuntu 17.04 ,并且我手动升级了我的内核版本以4.12.8使用该工具ukuu(Ubuntu Kernel Update Utility)。

当尝试启动(它已经安装)时,它要求我为其提供编译模块vmware的路径。gcc-7.1vmware

在此输入图像描述

我不明白为什么vmware问我这个问题,因为我vmware在同一台计算机上安装了以前的内核版本中的模块没有任何问题。

经过一些研究,我发现使用与编译当前内核vmware相同的版本来编译其模块。由于我手动安装了这个内核版本,所以我的计算机上gcc没有。gcc-7.1

我的问题是(很抱歉我不得不发表这么长的演讲):如何强制vmware使用另一个 gcc 版本来编译其模块?

答案1

简短回答: 你不应该。

长答案

这并不是说 VMware 无缘无故地固执地想要某个特定的 GCC 版本。使用另一个 GCC 而不是用于内核本身的 GCC 来编译内核模块是非常不明智的:如果两个 gcc 版本之间存在任何 ABI 更改,您可能会损坏系统并导致系统崩溃。

如果您说服 VMware 使用您的 GCC 版本编译其模块,内核将拒绝加载它们。然后,您必须对模块进行二进制编辑,以便用正确的签名替换 GCC 签名。

但总而言之,值得冒这个风险吗?最好下载/编译 GCC 7.1,或者使用当前的 GCC 版本重新编译内核。

答案2

添加我的评论作为答案,因为它回答了您的问题。

我认为您应该能够下载 tarball 并根据需要从源代码编译它。压缩包位于https://ftp.gnu.org/gnu/gcc/gcc-7.1.0/

下载 tarball 然后运行通常的./configure, make,make install

相关内容