디버깅을 위해 -Og/-O0 옵션을 사용하여 Linux 커널을 컴파일할 수 없습니다.

디버깅을 위해 -Og/-O0 옵션을 사용하여 Linux 커널을 컴파일할 수 없습니다.

임베디드 Linux(OpenWrt)를 실행하는 맞춤형 하드웨어를 갖는 것은 매우 매력적입니다. CPU - 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제공되므로 DDR3 RAM(128Mb)에 구성을 통해 컴파일된 더 큰 이미지를 37Mb수용할 수 있는 충분한 공간이 있기를 바랍니다 . -O0그렇다면 섹션에 더 많은 공간을 제공하는 방법이 궁금합니다. 누군가 내가 이 작업을 수행할 수 있는 위치를 알려줄 수 있나요? Linux 커널에 대한 지식이 부족하여 이 목적을 위한 링커 스크립트를 찾을 수 없었습니다.

관련 정보