デバッグのために-Og / -O0オプションを使用してLinuxカーネルをコンパイルすることはできません。

デバッグのために-Og / -O0オプションを使用してLinuxカーネルをコンパイルすることはできません。

組み込みLinux(OpenWrt)を実行するカスタムハードウェアを持つことは非常に魅力的です。 CPU - IMX6ULL(ArmV7)なので、JlinkはJTAGインタフェースを介したデバッグをサポートします。 GDBサーバーを起動してLinuxカーネルを段階的に進めると、カーネルがフラグoptimized outKBUILD_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カーネルの知識が不足しているため、この目的のためのリンカースクリプトが見つかりませんでした。

ベストアンサー1

おすすめ記事