问题描述
尝试编译 https://github.com/sipeed/MaixPy-v1,手动安装的 up-to-date 的 CMake 4.2.3,每次都编译出错。
[ 98%] Built target micropython
[ 99%] Building CXX object main/CMakeFiles/main.dir/src/main.cpp.o
[ 99%] Linking CXX static library libmain.a
[ 99%] Built target main
[ 99%] Building C object CMakeFiles/maixpy.dir/exe_src.c.o
[100%] Linking CXX executable maixpy
/opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: kendryte_sdk/libkendryte_sdk.a(entry_user.c.o): in function.L0 ': entry_user.c:(.text._init_bsp+0xa): undefined reference to_bss'
/opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: entry_user.c:(.text._init_bsp+0x12): undefined reference to_ebss' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: entry_user.c:(.text._init_bsp+0x8a): undefined reference tomain'
/opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: kendryte_sdk/libkendryte_sdk.a(syscalls.c.o): in function.L0 ': syscalls.c:(.text.sys_brk+0x6): undefined reference to_heap_end'
/opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: syscalls.c:(.text.sys_brk+0x70): undefined reference to_heap_start' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: kendryte_sdk/libkendryte_sdk.a(syscalls.c.o): in function.LANCHOR8':
syscalls.c:(.sdata._heap_cur+0x0): undefined reference to_heap_start' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: kendryte_sdk/libkendryte_sdk.a(syscalls.c.o): in function.LANCHOR6':
syscalls.c:(.sdata._heap_line+0x0): undefined reference to_heap_start' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: kendryte_sdk/libkendryte_sdk.a(syscalls.c.o): in function.LANCHOR7':
syscalls.c:(.sdata._ioheap_line+0x0): undefined reference to_heap_end' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: kendryte_sdk/libkendryte_sdk.a(tasks.c.o): in functionprvDeleteTCB':
tasks.c:(.text.prvDeleteTCB+0x8): undefined reference tovPortCleanUpTCB' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib/libc.a(lib_a-vfprintf.o): in function_vfprintf_r':
vfprintf.c:(.text._vfprintf_r+0x62): undefined reference topthread_setcancelstate' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: vfprintf.c:(.text._vfprintf_r+0xda): undefined reference topthread_setcancelstate'
/opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: vfprintf.c:(.text._vfprintf_r+0x118): undefined reference topthread_setcancelstate' /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: vfprintf.c:(.text._vfprintf_r+0x6ec): undefined reference topthread_setcancelstate'
/opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib/libc.a(lib_a-fflush.o): in function.L47': fflush.c:(.text._fflush_r+0x24): undefined reference topthread_setcancelstate'
/opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld: /opt/toolchains/kendryte/kendryte-toolchain/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib/libc.a(lib_a-fflush.o):fflush.c:(.text._fflush_r+0x6e): more undefined references to `pthread_setcancelstate' follow
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/maixpy.dir/build.make:115: maixpy] Error 1
make[1]: *** [CMakeFiles/Makefile2:294: CMakeFiles/maixpy.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
➜ maixpy_k210 git:(master) ✗
啥也不动,只是换一个 CMake 3.28 from Ubuntu 24.04 repo,则可以一次性编译通过。
实在有点令人匪夷所思呀!!!
复现步骤
把 Ubuntu 24.04 default CMake from repo 换成手动编译安装的最新版 CMake 4.2.3,立即复现。
硬件板卡
MaixPy-v1
其他信息
直接 git clone https://github.com/sipeed/MaixPy-v1