Избегайте создания отладочной информации в LKM с помощью kbuild

Я строю модуль ядра Linux (LKM) из больших файлов C (>50 000 LOC). Это некоторый сгенерированный код расчета RAID. Когда я пытаюсь собрать его из kbuild, gcc съедает всю память и вылетает, а вызов gcc вручную работает нормально.

После проверки объектных файлов из ручных gcc и kbuild я обнаружил, что объектные файлы kbuild в 20-30 раз больше, чем ручные объекты gcc (900k против 30M). И причина в том, что объектные файлы kbuild содержат гигантский раздел debug_info с тоннами данных.

Вот фрагмент из objdump -x:

RELOCATION RECORDS FOR [.debug_info]:
OFFSET           TYPE              VALUE 
0000000000000006 R_X86_64_32       .debug_abbrev
000000000000000c R_X86_64_32       .debug_str+0x0000000000000c41
0000000000000011 R_X86_64_32       .debug_str+0x0000000000000e26
0000000000000015 R_X86_64_32       .debug_str+0x0000000000000544
0000000000000019 R_X86_64_64       .text 
0000000000000021 R_X86_64_64       .text+0x0000000000060957
0000000000000029 R_X86_64_32       .debug_line
0000000000000030 R_X86_64_32       .debug_str+0x0000000000000b78
0000000000000037 R_X86_64_32       .debug_str+0x000000000000011e
0000000000000040 R_X86_64_32       .debug_str+0x000000000000066b
0000000000000047 R_X86_64_32       .debug_str+0x0000000000000d38
000000000000004e R_X86_64_32       .debug_str+0x0000000000000bef
                  ... another 60000 records ...
00000000000a0c8d R_X86_64_32       .debug_str+0x0000000000000add
00000000000a0ca0 R_X86_64_32       .debug_str+0x0000000000000526
00000000000a0cae R_X86_64_64       Calculation_1s_Func_Buf

Я уже пробовала EXTRA_CFLAG += -S без удачи

Так есть ли способ избежать создания отладочной информации в моих объектных файлах при сборке с помощью kbuild?

1 ответ

Вы пытались отключить CONFIG_DEBUG_INFO?

Ищите это в 'Kernel Hacking' -> 'Проверки времени компиляции и опции компилятора' -> 'Компилировать ядро ​​с отладочной информацией' в menuconfig.

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