Я пытаюсь установить инструмент Atheros CSI (обеспеченный инструкции по установке здесь), под управлением Ubuntu 18.04.2 LTS на ноутбуке Dell Inspiron 5570 с беспроводным адаптером QCA9377.
Я могу сделать все успешно, которое перечислено под разделом "Prepare" "Компиляции ядро" в инструкциях по установке. (Существуют некоторые вещи, не указанные в инструкциях, что я смог выяснить, чтобы сделать, как установка make
и gcc
.) Однако я смущен make menuconfig
ступите и вперед. Когда я ввожу make menuconfig
в папке Atheros-CSI-Tool я сразу нажимаю "Save", сохранив названный файл .config
, затем "Выход" меню.
Когда я ввожу make -j16
(У меня есть 8 ядер процессора), это - вывод:
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) от оперативного архива, но я встретился с теми же ошибками как показано выше.
Вот две проблемы:
Ядро не поддерживает режим PIC для компиляции, детали могли быть прослежены в этом сообщении. Как @Joy отмеченный, в настоящее время склонный установил gcc5 +, включили КРУГ по умолчанию, должны добавить мы -fno-pie
в к gcc опции.
Здесь я следую за этой фиксацией, добавляю, что следующие строки начинают с L774 Makefile
при мерзавце repo Вы клонировались.
# force no-pie for distro compilers that enable pie by default
KBUILD_CFLAGS += $(call cc-option, -fno-pie)
KBUILD_CFLAGS += $(call cc-option, -no-pie)
KBUILD_AFLAGS += $(call cc-option, -fno-pie)
KBUILD_AFLAGS += $(call cc-option, -no-pie)
# optional, mute warnings on pointers signedness to speed up compilation
KBUILD_CFLAGS += $(call cc-option, -Wno-pointer-sign)
include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc7.h
, это, в основном указывая это под папкой include/linux
из мерзавца repo Вы клонировались, нет такого названного файла compiler-gcc7.h
. В настоящее время под той папкой существует только до compiler-gcc5.h
. Поэтому прямой подход должен установить и временно выбрать gcc-5
как компилятор по умолчанию. Следующее:
# install gcc-5
sudo apt-get install gcc-5
# use update-alternatives to switch default gcc version
# register gcc-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60
# choose gcc-5 at prompt
update-alternatives --config gcc
# now check gcc version, verify is using gcc-5
gcc -v
## gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1)
Инструкция по установке, указанная для установки libnl-dev
через
sudo apt-get install libnl-dev
все же libnl-dev
кажется больше не существует для 18,04. Рассмотрите использование
sudo apt-get install libnl-3-dev
вместо этого, если Вы испытали затруднения.
Наконец Вы могли переключиться назад на gcc-7
после установки через
# choose gcc-7 at prompt
update-alternatives --config gcc