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

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

매력처럼 임베디드 Linux(OpenWrt)를 실행하는 맞춤형 하드웨어를 보유하고 있습니다. CPU - IMX6ULL(ArmV7)이므로 JTAG 인터페이스를 통해 디버깅하기 위해 Jlink에서 지원됩니다. 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으로 제작된 사이즈 는 입니다 . 을 사용하면 이미지가 제공되므로 구성 으로 컴파일된 더 큰 이미지를 저장할 수 있는 DDR3 RAM(128Mb)에 충분한 공간이 있기를 바랍니다 . 그렇다면 섹션에 더 많은 공간을 제공하는 방법이 궁금합니다. 누군가 내가 할 수 있는 곳을 알려 주실 수 있나요? Linux 커널에 대한 지식이 제한되어 있어 해당 커널에 사용되는 링커 스크립트를 찾을 수 없습니다.-O239Mb-O137Mb-O0

관련 정보