当我尝试在 Kali Linux 上编译 TP Link AC 600 的驱动程序时出现错误amd64 4.7.0 gcc 5.4.1 Debian 5.4.1-3
。
错误是“错误代码模型内核不支持PIC模式”
经过一番平坦的脚步后,我发现有人遇到了类似的问题,并且有人发布了补丁。
如何应用补丁以及应用到哪里?
这是另一个链接:无法编译内核:错误,内核不支持 PIC 模式
答案1
就 Ubuntu 和 Intel 驱动程序而言,Intel 仅测试了 Ubuntu LTS 版本的驱动程序(参见托德·藤中的回答)。所以你需要将 Ubuntu 从 16.10 降级到 16.04.1 LTS (重新安装,同时保留/home
)。
对于所有其他基于 Debian 的发行版(例如 Kali),情况也是如此:您需要降级(即重新安装)到驱动程序供应商明确支持的版本。 gcc PIC 之前的版本。
这可能不是一个令人愉快的答案,但它在技术上是正确的,如果您自己不是内核开发人员,那么您所能做的就是在内核邮件列表上闲逛,并非常礼貌地询问开发人员是否可以处理驱动程序代码。有时这会起作用,但要有耐心。
答案2
应用补丁的过程非常简单。假设您有内核目录和补丁文件,如下所示:
- /usr/src/kernels (or where you have the kernel directory)
---- /user/src/kernels/kernel_directory
---- /user/src/kernels/patch_file
根据补丁的格式(通常是 .gz、.bz2 或 .xz),您需要使用不同的命令来提取它。您需要进入kernel_directory
并运行下一个命令:
gzip -cd ../patch_file | patch -p1
- 这是一个 gzip 补丁
bzip2 -cd ../patch_file | patch -p1
- 这是一个 bzip 补丁
xz -cd ../patch_file | patch -p1
- 这是一个 xz 补丁
它将把补丁文件应用/usr/src/kernels/patch_file
到内核中/usr/src/kernels/kernel_directory
。您需要首先导航到/usr/src/kernels/kernel_directory
并从那里运行命令。
考虑创建内核目录的副本,以便您可以使用备份中的内核副本执行该过程以轻松恢复它。
注意:这只是应用补丁的过程,假设您正在为内核使用正确的补丁,则不会出现任何错误。您需要有补丁文件,例如内核官方的补丁文件。