Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Ошибка при компиляции cc1: error: code model kernel does not support PIC mode  (Прочитано 623 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ConnaiSSant

  • Автор темы
  • Активист
  • *
  • Сообщений: 452
    • Просмотр профиля
Ubuntu 18.04 64x
Компилирую драйвер usb для преобразователя интерфейса RS485

Полный выхлоп команды make:

 make:
Код: Bash
  1. make -C /lib/modules/4.15.0-20-generic/build M=/home/user/Загрузки/epsolar-tracer/xr_usb_serial_common-1a
  2. make[1]: вход в каталог «/usr/src/linux-headers-4.15.0-20-generic»
  3.   CC [M]  /home/user/Загрузки/epsolar-tracer/xr_usb_serial_common-1a/xr_usb_serial_common.o
  4. cc1: error: code model kernel does not support PIC mode
  5. scripts/Makefile.build:339: recipe for target '/home/user/Загрузки/epsolar-tracer/xr_usb_serial_common-1a/xr_usb_serial_common.o' failed
  6. make[2]: *** [/home/user/Загрузки/epsolar-tracer/xr_usb_serial_common-1a/xr_usb_serial_common.o] Error 1
  7. Makefile:1552: recipe for target '_module_/home/user/Загрузки/epsolar-tracer/xr_usb_serial_common-1a' failed
  8. make[1]: *** [_module_/home/user/Загрузки/epsolar-tracer/xr_usb_serial_common-1a] Error 2
  9. make[1]: выход из каталога «/usr/src/linux-headers-4.15.0-20-generic»
  10. Makefile:9: recipe for target 'all' failed
  11. make: *** [all] Error 2
  12.  


В гугле предлагают какие то патчи

gcc --version
gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0

« Последнее редактирование: 15 Май 2018, 22:15:45 от ConnaiSSant »

Оффлайн bezbo

  • Активист
  • *
  • Сообщений: 547
    • Просмотр профиля
Пояснение:
Цитировать
The issue is with your gcc installation, in gcc 6+ versions PIE( position independent executables) is enabled by default. So in order to compile you need to disable it. Even gcc 5 has the issue. This is a known bug for gcc.

Решение:
Цитировать
Open the Makefile, look for CFLAGS_EXTRA and add the following option to it -fno-pie

I had the line:

EXTRA_CFLAGS += $(CFLAGS_EXTRA)

I changed it for:

EXTRA_CFLAGS += $(CFLAGS_EXTRA) -fno-pie

And it started compiling again.

Оффлайн ConnaiSSant

  • Автор темы
  • Активист
  • *
  • Сообщений: 452
    • Просмотр профиля
Отсутствует CFLAGS_EXTRA

Код: Bash
  1. obj-m := xr_usb_serial_common.o
  2.  
  3. KERNELDIR ?= /lib/modules/$(shell uname -r)/build
  4. PWD       := $(shell pwd)
  5.  
  6. EXTRA_CFLAGS    := -DDEBUG=0
  7.  
  8. all:
  9.         $(MAKE) -C $(KERNELDIR) M=$(PWD)
  10.  
  11. modules_install:
  12.         $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
  13.  
  14. clean:
  15.         rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions vtty

Пользователь добавил сообщение 16 Май 2018, 08:31:37:
Или как вариант, собрать gcc без pie

Пользователь добавил сообщение 16 Май 2018, 21:06:32:
Но это долгий способ. Давайте сначало, какой Makefile нужно изменить? То что собираемся компилировать или при сборке gcc имеется ввиду? Если компилируемый код, то можно просто добавить целиком строку из вышеперечисленного ответа?
« Последнее редактирование: 16 Май 2018, 21:06:32 от ConnaiSSant »

 

Страница сгенерирована за 0.084 секунд. Запросов: 24.