Linker errors when trying to build iMX7D M4 examples

I’ve followed the steps in the tutorial to program the M4 with Visual Studio Code.
But finally got stuck at the following error when trying to build…
AR19DD~1.EXE: error: Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/armgcc/…/…/…/…/…/platform/devices/MCIMX7D/linker/gcc/: No such file or directory
CMakeFiles\hello_world.dir\build.make:404: recipe for target ‘hello_world.elf’ failed
mingw32-make[2]: *** [hello_world.elf] Error 1

Any idea where to start looking?

The one you are linking is the one i followed.
Can’t compile them via VSC nor by running the .bat file.

Greetings @Michielt!

Which tutorial did you follow? We have some documentation on using the M4 with VSCode but I’m afraid it can be a little outdated.

Are you able to compile the examples manually as described in this article?

Could you please:

  • Specify am OS you are using on your dev machine?

  • Provide a full build log when you run a bat file?

@Michielt,

Can you please describe the exact steps you’re running to compile? A terminal output and any further logs will be useful.
I just tried this on my side and it works, but I’m on Linux. Let me know so we might update the documentation for Windows.

Running on windows 10.
This is after clicking on the ‘build_all.bat’

– TOOLCHAIN_DIR: C:/Program Files (x86)/GNU Tools ARM Embedded/8 2018-q4-major
– BUILD_TYPE: Release
– Configuring done
– Generating done
– Build files have been written to: C:/Local Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/armgcc/release
[ 4%] Building ASM object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S.obj
[ 8%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/devices/MCIMX7D/startup/system_MCIMX7D_M4.c.obj
[ 12%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/ccm_analog_imx7d.c.obj
[ 16%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/ccm_imx7d.c.obj
[ 20%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/lmem.c.obj
[ 25%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/rdc.c.obj
[ 29%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/uart_imx.c.obj
[ 33%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/wdog_imx.c.obj
[ 37%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/utilities/src/debug_console_imx.c.obj
[ 41%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/utilities/src/print_scan.c.obj
[ 45%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/croutine.c.obj
[ 50%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/event_groups.c.obj
[ 54%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/list.c.obj
[ 58%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c.obj
[ 62%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/portable/MemMang/heap_2.c.obj
[ 66%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/queue.c.obj[ 70%]
Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/tasks.c.obj
[ 75%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/timers.c.obj
[ 79%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/board.c.obj
[ 83%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/clock_freq.c.obj
[ 87%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/pin_mux.c.obj
[ 91%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/hardware_init.c.obj
[ 95%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/main.c.obj
[100%] Linking C executable hello_world.elf
AR19DD~1.EXE: error: Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/armgcc/…/…/…/…/…/platform/devices/MCIMX7D/linker/gcc/: No such file or directory
CMakeFiles\hello_world.dir\build.make:404: recipe for target ‘hello_world.elf’ failed
mingw32-make[2]: *** [hello_world.elf] Error 1
CMakeFiles\Makefile2:71: recipe for target ‘CMakeFiles/hello_world.dir/all’ failed
mingw32-make[1]: *** [CMakeFiles/hello_world.dir/all] Error 2
Makefile:82: recipe for target ‘all’ failed
mingw32-make: *** [all] Error 2

Hm, not sure if last comment dissapeared or what happened to it, trying again.
The OS is windows 10, started the build by either clicking on the build_all file or build task in vsc.

Below is full console output:

– TOOLCHAIN_DIR: C:/Program Files (x86)/GNU Tools ARM Embedded/8 2018-q4-major
– BUILD_TYPE: Release
– Configuring done
– Generating done
– Build files have been written to: C:/Local Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/armgcc/release
[ 4%] Building ASM object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S.obj
[ 8%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/devices/MCIMX7D/startup/system_MCIMX7D_M4.c.obj
[ 12%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/ccm_analog_imx7d.c.obj
[ 16%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/ccm_imx7d.c.obj
[ 20%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/lmem.c.obj
[ 25%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/rdc.c.obj
[ 29%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/uart_imx.c.obj
[ 33%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/drivers/src/wdog_imx.c.obj
[ 37%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/utilities/src/debug_console_imx.c.obj
[ 41%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/platform/utilities/src/print_scan.c.obj
[ 45%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/croutine.c.obj
[ 50%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/event_groups.c.obj
[ 54%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/list.c.obj
[ 58%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c.obj
[ 62%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/portable/MemMang/heap_2.c.obj
[ 66%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/queue.c.obj[ 70%]
Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/tasks.c.obj
[ 75%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/rtos/FreeRTOS/Source/timers.c.obj
[ 79%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/board.c.obj
[ 83%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/clock_freq.c.obj
[ 87%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/pin_mux.c.obj
[ 91%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/hardware_init.c.obj
[ 95%] Building C object CMakeFiles/hello_world.dir/C_/Local_Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/main.c.obj
[100%] Linking C executable hello_world.elf
AR19DD~1.EXE: error: Home/GIT/FreeRTOS-Colibri-iMX7/examples/imx7_colibri_m4/demo_apps/hello_world/armgcc/…/…/…/…/…/platform/devices/MCIMX7D/linker/gcc/: No such file or directory
CMakeFiles\hello_world.dir\build.make:404: recipe for target ‘hello_world.elf’ failed
mingw32-make[2]: *** [hello_world.elf] Error 1
CMakeFiles\Makefile2:71: recipe for target ‘CMakeFiles/hello_world.dir/all’ failed
mingw32-make[1]: *** [CMakeFiles/hello_world.dir/all] Error 2
Makefile:82: recipe for target ‘all’ failed
mingw32-make: *** [all] Error 2

Figured it out…
For some reason the fact that in the logs the path is changed from c:/local home/ to c_/local_home made me wonder if it had something to to with the space between local and home.
So moved the whole folder to a path that doesn’t contain spaces and that solved the issue.
Maybe this is something i should have known, but might not hurt to add this as a remark to the part about cloning the git repo?

Thanks for update. We will consider changes to the build documentation.