使用 Kendryte IDE编译自带工程gpio_led_standalone出错的解决办法
输出错误如下:
INFO] [100%] Linking C executable gpio_led_standalone
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-vfprintf.o): in function `_vfprintf_r':
[ INFO] vfprintf.c:(.text._vfprintf_r+0x62): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text._vfprintf_r+0x80): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text._vfprintf_r+0xd6): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text._vfprintf_r+0xe2): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text._vfprintf_r+0x118): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text._vfprintf_r+0x124): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text._vfprintf_r+0x6f0): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text._vfprintf_r+0x6fc): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-vfprintf.o): in function `__sbprintf':
[ INFO] vfprintf.c:(.text.__sbprintf+0x4e): undefined reference to `_lock_init_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: vfprintf.c:(.text.__sbprintf+0x8c): undefined reference to `_lock_close_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-__atexit.o): in function `.L0 ':
[ INFO] __atexit.c:(.text.__register_exitproc+0x12): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: __atexit.c:(.text.__register_exitproc+0x44): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-__atexit.o): in function `.L6':
[ INFO] __atexit.c:(.text.__register_exitproc+0x9a): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-__call_atexit.o): in function `.L0 ':
[ INFO] __call_atexit.c:(.text.__call_exitprocs+0x1c): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: __call_atexit.c:(.text.__call_exitprocs+0x50): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-fflush.o): in function `.L47':
[ INFO] fflush.c:(.text._fflush_r+0x24): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fflush.c:(.text._fflush_r+0x42): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-fflush.o): in function `.L49':
[ INFO] fflush.c:(.text._fflush_r+0x6a): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fflush.c:(.text._fflush_r+0x76): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-findfp.o): in function `.L0 ':
[ INFO] findfp.c:(.text.std+0x68): undefined reference to `_lock_init_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-findfp.o): in function `__sfp_lock_acquire':
[ INFO] findfp.c:(.text.__sfp_lock_acquire+0x4): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-findfp.o): in function `__sfp_lock_release':
[ INFO] findfp.c:(.text.__sfp_lock_release+0x4): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-findfp.o): in function `__sinit_lock_acquire':
[ INFO] findfp.c:(.text.__sinit_lock_acquire+0x4): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-findfp.o): in function `__sinit_lock_release':
[ INFO] findfp.c:(.text.__sinit_lock_release+0x4): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-mlock.o): in function `__malloc_lock':
[ INFO] mlock.c:(.text.__malloc_lock+0x4): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-mlock.o): in function `__malloc_unlock':
[ INFO] mlock.c:(.text.__malloc_unlock+0x4): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-fclose.o): in function `.L3':
[ INFO] fclose.c:(.text._fclose_r+0x1e): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fclose.c:(.text._fclose_r+0x3c): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-fclose.o): in function `.L4':
[ INFO] fclose.c:(.text._fclose_r+0x56): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-fclose.o): in function `.L6':
[ INFO] fclose.c:(.text._fclose_r+0x62): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-fclose.o): in function `.L11':
[ INFO] fclose.c:(.text._fclose_r+0xd4): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fclose.c:(.text._fclose_r+0xde): undefined reference to `_lock_close_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fclose.c:(.text._fclose_r+0xee): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib\libc.a(lib_a-fputwc.o): in function `_fputwc_r':
[ INFO] fputwc.c:(.text._fputwc_r+0x14): undefined reference to `pthread_setcancelstate'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fputwc.c:(.text._fputwc_r+0x32): undefined reference to `_lock_acquire_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fputwc.c:(.text._fputwc_r+0x7e): undefined reference to `_lock_release_recursive'
[ INFO] h:/k210/kendryteide/localpackage/toolchain/bin/../lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: fputwc.c:(.text._fputwc_r+0x8a): undefined reference to `pthread_setcancelstate'
[ INFO] collect2.exe: error: ld returned 1 exit status
[ INFO] mingw32-make.exe[2]: *** [CMakeFiles/gpio_led_standalone.dir/build.make:84: gpio_led_standalone] Error 1
[ INFO] mingw32-make.exe[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/gpio_led_standalone.dir/all] Error 2
[ INFO] mingw32-make.exe: *** [Makefile:84: all] Error 2
[ INFO]
[ INFO] Build Error: h:/K210/KendryteIDE/LocalPackage/cmake/bin/cmake.exe exited with code 2.
解决办法:
在 main函数之前再加一个不用的子函数即可解决,如下:
int solve()
{
printf("solve");
}