фатальная ошибка: linux/compiler-gcc7.h: Никакой такой файл или каталог

Я пытаюсь установить инструмент 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) от оперативного архива, но я встретился с теми же ошибками как показано выше.

0
задан 9 July 2019 в 12:43

1 ответ

Вот две проблемы:

  1. Ядро не поддерживает режим 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)
    
  2. 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
0
ответ дан 24 October 2019 в 00:24

Другие вопросы по тегам:

Похожие вопросы: