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


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

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

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

Оффлайн ConnaiSSant

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

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

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


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

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

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

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1766
    • Просмотр профиля
Пояснение:
Цитировать
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

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

Код: (bash) [Выделить]
obj-m := xr_usb_serial_common.o

KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD       := $(shell pwd)

EXTRA_CFLAGS    := -DDEBUG=0

all:
        $(MAKE) -C $(KERNELDIR) M=$(PWD)

modules_install:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
        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.052 секунд. Запросов: 25.