Рейтинг:0

ошибка компиляции во время сборки ядра Ubuntu 5.4.0-42.46

флаг za

Я скачал исходный код ubuntu git-клон git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git. и поскольку я хотел использовать определенную версию, я сделал git checkout Ubuntu-5.4.0-42.46 (эта версия используется в установке Ubuntu .iso. См. соответствующий вопрос здесь: какую исходную версию ubuntu следует использовать для добавления некоторых отладочных отпечатков? (для отладки загрузки Ubuntu) )

После git-checkout журнал git показывает этот результат:

коммит 98c4545e2d65ed35c31056f72c4da20f6b5ea0d0 (HEAD, тег: Ubuntu-5.4.0-42.46)
Автор: Халид Элмусли <[email protected]>
Дата: Чт, 9 июля, 19:50:26 2020 -04:00

    УБУНТУ: Убунту-5.4.0-42.46
    
    Подписано: Халид Элмусли <[email protected]>

Чтобы собрать ядро, я сделал ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- make defconfig и ARCH=arm64 CROSS_COMPILE=aarch64-none-elf-make-j24 Image. Но это дает мне ошибку компиляции ниже. Что может быть не так?

  . 
  . 
  CC мм/interval_tree.o
  Драйверы CC/база/regmap/regcache.o
  Ядро CC/время/posix-cpu-timers.o
  CC мм/list_lru.o
  CC блок/blk-mq.o
  AS arch/arm64/lib/memchr.o
  CC fs/ext4/migrate.o
security/security.c: В функции 'security_add_hooks':
security/security.c:477:25: ошибка: 'struct security_hook_heads' не имеет члена с именем 'socket_getpeersec_stream'
  477 | &security_hook_heads.socket_getpeersec_stream)
      | ^
  Ядро CC/время/posix-clock.o
  AS arch/arm64/lib/memcmp.o
security/security.c: В функции 'security_setprocattr':
  CC arch/arm64/kvm/../../../virt/kvm/arm/vgic/vgic-v2.o
security/security.c:2058:27: ошибка: 'union security_list_options' не имеет члена с именем 'socket_getpeersec_stream'
 2058 | socket_getpeersec_stream.socket_getpeersec_stream = NULL;
      | ^
В файле, включенном из ./include/linux/timer.h:5,
                 из ./include/linux/workqueue.h:9,
                 из ./include/linux/bpf.h:9,
                 из безопасности/безопасности.c:13:
security/security.c:2060:25: ошибка: 'struct security_hook_heads' не имеет члена с именем 'socket_getpeersec_stream'
 2060 | &security_hook_heads.socket_getpeersec_stream,
      | ^
./include/linux/list.h:857:12: примечание: в определении макроса 'hlist_entry_safe'
  857 | ({ typeof(ptr) ____ptr = (ptr); \
      | ^~~
security/security.c:2059:3: примечание: в расширении макроса 'hlist_for_each_entry'
 2059 | hlist_for_each_entry(hp,
      | ^~~~~~~~~~~~~~~~~~~~~
security/security.c:2060:25: ошибка: 'struct security_hook_heads' не имеет члена с именем 'socket_getpeersec_stream'
 2060 | &security_hook_heads.socket_getpeersec_stream,
      | ^
./include/linux/list.h:857:28: примечание: в определении макроса 'hlist_entry_safe'
  857 | ({ typeof(ptr) ____ptr = (ptr); \
      | ^~~
security/security.c:2059:3: примечание: в расширении макроса 'hlist_for_each_entry'
 2059 | hlist_for_each_entry(hp,
      | ^~~~~~~~~~~~~~~~~~~~~
В файле, включенном из ./include/linux/list.h:9,
                 из ./include/linux/timer.h:5,
                 из ./include/linux/workqueue.h:9,
                 из ./include/linux/bpf.h:9,
                 из безопасности/безопасности.c:13:
./include/linux/kernel.h:993:17: предупреждение: приведение к указателю из целого числа разного размера [-Wint-to-pointer-cast]
  993 | void *__mptr = (void *)(ptr); \
      | ^
./include/linux/list.h:847:40: примечание: в расширении макроса 'container_of'
  847 | #define hlist_entry (указатель, тип, член) container_of (указатель, тип, член)
      | ^~~~~~~~~~~~~
  . 
  . 

Когда я делаю то же самое с исходным кодом linux-5.4.21, он компилируется нормально.

Рейтинг:0
флаг za

Я обнаружил, что у ubuntu есть собственный способ сборки всей ubuntu, включая ядро. Это показано здесь: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

Правильный метод для случая arm64 был (со страницы выше)

LANG=C fakeroot debian/rules ARCH=arm64 чистый
# более быстрая сборка:
LANG=C fakeroot debian/rules ARCH=arm64 бинарные-заголовки бинарный-общий бинарный-перарх
# если вам нужны linux-tools или ядро ​​с низкой задержкой, запустите:
LANG=C fakeroot debian/rules ARCH=arm64 двоичный файл

Вы можете добавить отладочную информацию, используя эти команды (со страницы выше):

sudo apt-get установить pkg-config-dbgsym
LANG=C fakeroot debian/правила чистые
LANG=C fakeroot debian/rules

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.