Невозможно скомпилировать ядро ​​Linux с опцией -Og/-O0 для целей отладки

Невозможно скомпилировать ядро ​​Linux с опцией -Og/-O0 для целей отладки

Наличие собственного оборудования, работающего на встроенном Linux (OpenWrt), просто прелесть. Процессор - IMX6ULL (ArmV7), поэтому он поддерживается Jlink для отладки через интерфейс JTAG. Запуск сервера GDB и пошаговая отладка ядра Linux выдает много optimized outсообщений из-за того, что ядро ​​скомпилировано с KBUILD_CFLAGS += -O2 -fno-reorder-blocks -fno-tree-ch $(EXTRA_OPTIMIZATION)флагом. Поэтому я пытаюсь скомпилировать его с помощью -O0этого, что дает мне следующую возможность:

$ make -j64 V=s all
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CC      scripts/mod/empty.o
  ....
  AR      built-in.o
  LD      vmlinux.o
  MODPOST vmlinux.o
  WARNING: modpost: Found 4 section mismatch(es).
  To see full details build your kernel with:
  'make CONFIG_DEBUG_SECTION_MISMATCH=y'
  arm-openwrt-linux-muslgnueabi-ld: arch/arm/kernel/setup.o: in function `setup_arch':
/opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/arch/arm/kernel/setup.c:1134: undefined reference to `psci_smp_ops'
  arm-openwrt-linux-muslgnueabi-ld: /opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/arch/arm/kernel/setup.c:1134: undefined reference to `psci_smp_ops'
  arm-openwrt-linux-muslgnueabi-ld: kernel/panic.o: in function `__xchg':
/opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/./arch/arm/include/asm/cmpxchg.h:110: undefined reference to `__bad_xchg'
  arm-openwrt-linux-muslgnueabi-ld: kernel/exit.o: in function `__xchg':

Проверено наWARNING: modpost: Found x section mismatch(es). здесь. Похоже, что полученный двоичный файл занимает больше места, чем настроено некоторыми настройками. Размер, vmlinuxсозданный с -O2опцией, равен 39Mb. Использование -O1дает мне 37Mbобраз, поэтому я надеюсь, что в моей оперативной памяти DDR3 (128 Мб) достаточно места для еще большего образа, скомпилированного с -O0конфигурацией. Поэтому мне интересно, как предоставить больше места для разделов? Может ли кто-нибудь указать мне место, где я могу это сделать? Имею ограниченные знания о ядре Linux, поэтому не смог найти ни одного скрипта компоновщика, который использовался бы для этого.

Связанный контент