Hello
I’m trying to build the firmware, so far without success. Things seem to compile correcty without errors or warnings, but then at the end I get lots and lots of linker errors.
The end of the output looks like below (there is plenty before that, but all follows the same pattern):
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:836:(.text.Handle_EXTI_Irq+0x48): undefined reference to `gc_lock'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:838:(.text.Handle_EXTI_Irq+0x4e): undefined reference to `nlr_push'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:839:(.text.Handle_EXTI_Irq+0x5c): undefined reference to `mp_call_function_1'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:840:(.text.Handle_EXTI_Irq+0x60): undefined reference to `nlr_pop'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:848:(.text.Handle_EXTI_Irq+0x64): undefined reference to `gc_unlock'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:849:(.text.Handle_EXTI_Irq+0x68): undefined reference to `mp_sched_unlock'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:845:(.text.Handle_EXTI_Irq+0x80): undefined reference to `mp_printf'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:846:(.text.Handle_EXTI_Irq+0x88): undefined reference to `mp_obj_print_exception'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:846:(.text.Handle_EXTI_Irq+0x90): undefined reference to `mp_state_ctx'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:846:(.text.Handle_EXTI_Irq+0xa0): undefined reference to `mp_plat_print'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/lib/micropython/ports/stm32/extint.c:829:(.text.Handle_EXTI_Irq+0x40): undefined reference to `mp_sched_schedule'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/build/lib/micropython/pins_OPENMV4.o:/home/felix/src/openmv/build/lib/micropython/pins_OPENMV4.c:792:(.rodata.machine_pin_board_pins_locals_dict+0x0): undefined reference to `mp_type_dict'
/home/felix/cache/gcc/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /home/felix/src/openmv/build/lib/micropython/pins_OPENMV4.o:/home/felix/src/openmv/build/lib/micropython/pins_OPENMV4.c:755:(.rodata.machine_pin_cpu_pins_locals_dict+0x0): undefined reference to `mp_type_dict'
Memory region Used Size Region Size %age Used
DTCM: 0 GB 128 KB 0.00%
ITCM: 64 KB 64 KB 100.00%
SRAM0: 512 KB 512 KB 100.00%
SRAM1: 282824 B 280 KB 98.64%
SRAM2: 8 KB 8 KB 100.00%
SRAM4: 64 KB 64 KB 100.00%
FLASH_FFS: 0 GB 128 KB 0.00%
FLASH_TEXT: 260928 B 1664 KB 15.31%
collect2: error: ld returned 1 exit status
make: *** [/home/felix/src/openmv/ports/stm32/omv_portconfig.mk:250: firmware] Error 1
I followed the “Linux Build” guide, cloning the full repo (–recursively). I’ve also verified I have the correct toolchain gcc version 13.2.1 20231009 (Arm GNU Toolchain 13.2.rel1.
It fails the same way for both OPENMV4 and OPENMV4P targets.
I’m doing this on a VM running Linux Mint 22.1.
Any ideas what’s wrong here?
Thanks
Felix