呼び出し: MCU C++ リンカー
arm-none-eabi-c++ -nostartfiles -nodefaultlibs -nostdlib -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -T evkbmimxrt1170_freertos_generic_cm7_Debug.ld -o "evkbmimxrt1170_freertos_generic_cm7.axf"./xip/dcd.o./xip/evkbmimxrt1170_flexspi_nor_config.o ./xip/fsl_flexspi_nor_boot.o ./xip/xmcd.o ./utilities/str/fsl_str.o ./utilities/debug_console_lite/fsl_debug_console.o ./utilities/fsl_assert.o ./utilities/fsl_memcpy.o ./startup/boot_multicore_slave.o ./startup/startup_mimxrt1176_cm7.o ./source/freertos_generic.o ./source/semihost_hardfault.o ./freertos/freertos-kernel/ポータブル/MemMang/heap_4.o ./freertos/freertos-kernel/ポータブル/GCC/ARM_CM4F/port.o ./freertos/freertos-kernel/croutine.o ./freertos/freertos-kernel/event_groups.o ./freertos/freertos-kernel/list.o ./freertos/freertos-kernel/queue.o ./freertos/freertos-kernel/stream_buffer.o ./freertos/freertos-kernel/tasks.o ./freertos/freertos-kernel/timers.o ./freertos/FreeRTOSAddons/cpp/Source/ccondition_variable.o ./freertos/FreeRTOSAddons/cpp/Source/cevent_groups.o ./freertos/FreeRTOSAddons/cpp/Source/cmem_pool.o ./freertos/FreeRTOSAddons/cpp/Source/cmutex.o ./freertos/FreeRTOSAddons/cpp/Source/cqueue.o ./freertos/FreeRTOSAddons/cpp/Source/cread_write_lock.o ./freertos/FreeRTOSAddons/cpp/Source/csemaphore.o ./freertos/FreeRTOSAddons/cpp/Source/ctasklet.o ./freertos/FreeRTOSAddons/cpp/Source/cthread.o ./freertos/FreeRTOSAddons/cpp/Source/ctickhook.o ./freertos/FreeRTOSAddons/cpp/Source/ctimer.o ./freertos/FreeRTOSAddons/cpp/Source/cworkqueue.o ./freertos/FreeRTOSAddons/c/Source/dlist.o ./freertos/FreeRTOSAddons/c/Source/mem_pool.o ./freertos/FreeRTOSAddons/c/Source/queue_simple.o ./freertos/FreeRTOSAddons/c/Source/read_write_lock.o ./freertos/FreeRTOSAddons/c/Source/slist.o ./freertos/FreeRTOSAddons/c/Source/stack_simple.o ./freertos/FreeRTOSAddons/c/Source/workqueue.o ./freertos/FreeRTOSAddons/c/Source/zero_copy_queue.o ./ドライバ/fsl_anatop_ai.o ./ドライバ/fsl_cache.o ./ドライバ/fsl_clock.o ./ドライバ/fsl_common.o ./ドライバ/fsl_common_arm.o ./ドライバ/fsl_dcdc.o ./ドライバ/fsl_gpc.o ./ドライバ/fsl_gpio.o ./ドライバ/fsl_lpuart.o ./ドライバ/fsl_mu.o ./ドライバ/fsl_pgmc.o ./ドライバ/fsl_pmu.o ./ドライバ/fsl_soc_src.o ./device/system_MIMXRT1176_cm7.o ./component/uart/fsl_adapter_lpuart.o ./board/board.o ./board/clock_config.o ./board/hardware_init.o ./board/pin_mux.o
D:/nxp/MCUXpressoIDE_25.6.136/ide/plugins/com.nxp.mcuxpresso.tools.win32_25.6.0.202501151204/tools/bin/../lib/gcc/Arm-none-eabi/14.2.1/../../../../Arm-none-eabi/bin/ld.exe: 警告: evkbmimxrt1170_freertos_generic_cm7.axf には RWX 権限を持つ LOAD セグメントがあります
D:/nxp/MCUXpressoIDE_25.6.136/ide/plugins/com.nxp.mcuxpresso.tools.win32_25.6.0.202501151204/tools/bin/../lib/gcc/Arm-none-eabi/14.2.1/../../../../Arm-none-eabi/bin/ld.exe: ./xip/fsl_flexspi_nor_boot.o:(.boot_hdr.ivt+0x10):undefined reference to `__boot_hdr_boot_data_loadaddr__'
D:/nxp/MCUXpressoIDE_25.6.136/ide/plugins/com.nxp.mcuxpresso.tools.win32_25.6.0.202501151204/tools/bin/../lib/gcc/Arm-none-eabi/14.2.1/../../../../Arm-none-eabi/bin/ld.exe: ./xip/fsl_flexspi_nor_boot.o:(.boot_hdr.ivt+0x14): `__boot_hdr_ivt_loadaddr__' への未定義の参照
collect2.exe:エラー: ld は 1 の終了ステータスを返しました
メイク[1]: *** [メイクファイル:82: evkbmimxrt1170_freertos_generic_cm7.axf]エラー1
make: *** [makefile:73: all] エラー 2
「make -r -j8 all」は終了コード 2 で終了しました。ビルドが不完全である可能性があります。
=====================================================
「アプリケーションを RAM にリンク」を選択すると、上記のエラーが発生します。選択されていない場合はエラーは報告されません
こんにちは@yanpingzhuさん
追加情報をありがとうございます。これは、C ファイルと CPP ファイルを管理するための IDEs のリンク スクリプトの違いによるものと思われます。次の 2 つのマクロ定義は手動で変更する必要があります。これはコンパイルされて成功します。
よろしくお願いします、
ギャビン
ご回答ありがとうございます
Cコンパイラを使用して「アプリケーションをRAMにリンク」を選択した場合にはエラーは発生しません。C++コンパイラを使用して「アプリケーションをRAMにリンク」を選択した場合にのみエラーが発生します。
こんにちは@yanpingzhuさん
NXP MIMXRTシリーズにご興味をお持ちいただきありがとうございます。
提供されたエラー メッセージから、問題はリンク スクリプト内の `__boot_hdr_ivt_loadaddr __' and `__ boot_hdr_boot_data_loadaddr__' によって発生しているようです。
ただし、Link-to-RAM は XIP イメージを生成しないため、IDEs の車載生成スクリプトは異なり、boot_hdr セクションが含まれません。したがって、「リンカー スクリプトの管理」がチェックされていることを確認し、クリーンアップしてから再度コンパイルしてください。