我正在尝试安装Atheros CSI 工具(在此处提供安装说明),在带有 QCA9377 无线适配器的戴尔 Inspiron 5570 笔记本电脑上运行 Ubuntu 18.04.2 LTS。
我能够成功完成安装说明中“编译内核”的“准备”部分中列出的所有操作。(在说明中没有指定一些我能够弄清楚的事情,比如安装make
和gcc
。)但是,我对这make menuconfig
一步及以后的事情感到困惑。当我输入make menuconfig
Atheros-CSI-Tool 文件夹时,我立即按“保存”,保存一个名为 的文件.config
,然后“退出”菜单。
当我输入make -j16
(我有 8 个 CPU 内核)时,输出如下:
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CC scripts/mod/empty.o
CC scripts/mod/devicetable-offsets.s
cc1: error: code model kernel does not support PIC mode
cc1: error: code model kernel does not support PIC mode
scripts/Makefile.build:258: recipe for target 'scripts/mod/empty.o' failed
make[2]: *** [scripts/mod/empty.o] Error 1
make[2]: *** Waiting for unfinished jobs....
scripts/Makefile.build:153: recipe for target 'scripts/mod/devicetable-offsets.s' failed
make[2]: *** [scripts/mod/devicetable-offsets.s] Error 1
scripts/Makefile.build:403: recipe for target 'scripts/mod' failed
make[1]: *** [scripts/mod] Error 2
make[1]: *** Waiting for unfinished jobs....
Makefile:555: recipe for target 'scripts' failed
make: *** [scripts] Error 2
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes. Stop.
当我然后键入make modules
时,这是输出:
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CC arch/x86/purgatory/purgatory.o
In file included from include/linux/compiler.h:54:0,
from include/uapi/linux/stddef.h:1,
from include/linux/stddef.h:4,
from ./include/uapi/linux/posix_types.h:4,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from arch/x86/purgatory/sha256.h:14,
from arch/x86/purgatory/purgatory.c:13:
include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc7.h: No such file or directory
#include gcc_header(__GNUC__)
^~~~
compilation terminated.
scripts/Makefile.build:258: recipe for target 'arch/x86/purgatory/purgatory.o' failed
make[1]: *** [arch/x86/purgatory/purgatory.o] Error 1
arch/x86/Makefile:185: recipe for target 'archprepare' failed
make: *** [archprepare] Error 2
我尝试通过从档案中安装旧版本的 Ubuntu (14.04) 来修复遇到的这些错误,但是 Wi-Fi 在该操作系统下的笔记本电脑上不起作用(这很重要,因为我正在收集有关 Wi-Fi 连接的数据使用我尝试安装的工具)。我还从在线存档中安装了旧的 Linux 内核(4.1.10),但遇到了与上图相同的错误。
这里有两个问题:
Kernel 不支持 PIC 模式编译,详情请看这篇文章。正如@Joy 所指出的,当前安装的 gcc5+ 默认启用了 PIE,我们需要添加
-fno-pie
到 gcc 选项。在这里,我正在遵循此
Makefile
修复程序,从您克隆的 git 存储库下的L774 开始添加以下行。include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc7.h
,这基本上说明在include/linux
您克隆的 git repo 的文件夹下,没有名为compiler-gcc7.h
. 目前该文件夹下仅存在compiler-gcc5.h
. 因此,直接的方法是安装并临时选择gcc-5
默认编译器。下列的:安装说明说明通过
libnl-dev
安装但
libnl-dev
18.04 似乎不再存在。考虑使用相反,如果你有麻烦。
最后,您可以通过以下方式切换回
gcc-7
安装后