kendryte / kendryte-standalone-sdk

Standalone SDK for kendryte K210
https://kendryte.com
Apache License 2.0
445 stars 162 forks source link

failed to merge target specific data of file: can't link single-float modules with double-float modules #134

Closed alissa-tung closed 3 years ago

alissa-tung commented 3 years ago

TL; DL turns out that kendryte ide will download a fullset of riscv gnu toolchain, i am wondering what the configure and compile flags is the version. it can build the sdk anyway

Hello, I am new to RISC-V and C toolchains, when trying to build the example given in the README


Actual behavior

[ 27%] Building C object lib/CMakeFiles/kendryte.dir/drivers/iomem.c.obj
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/iomem.c:20:5: error: unknown type name '_lock_t'
   20 |     _lock_t *lock;
      |     ^~~~~~~
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/iomem.c:23:8: error: unknown type name '_lock_t'
   23 | static _lock_t iomem_lock;
      |        ^~~~~~~
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/iomem.c: In function 'iomem_free':
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/iomem.c:141:5: error: implicit declaration of function '_lock_acquire_recursive'; did you mean '__retarget_lock_acquire_recursive'? [-Werror=implicit-function-declaration]
  141 |     _lock_acquire_recursive(malloc_cortol.lock);
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     __retarget_lock_acquire_recursive
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/iomem.c:144:5: error: implicit declaration of function '_lock_release_recursive'; did you mean '__retarget_lock_release_recursive'? [-Werror=implicit-function-declaration]
  144 |     _lock_release_recursive(malloc_cortol.lock);
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     __retarget_lock_release_recursive
cc1: some warnings being treated as errors

Test code

sed -i 's/-unknown-/-/g' cmake/toolchain.cmake
mkdir build && cd build
cmake .. -DPROJ=hello_world -DTOOLCHAIN=/usr/bin
make

Document version

default branch, HEAD

System

ArchLinux


I also had ran into other problems too. Tested with the latest GNU RISC-V toolchain on GitHub built from source on two different machine leads to the same error: No SOURCES given to target: hello_world

simply add ${...}/bsp to include dir in CMakeList.txt of lib and add include "locks.c" leads to tons of linker errors.

alissa-tung commented 3 years ago

checkout to 0.5.6

[100%] Linking C executable hello_world
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: CMakeFiles/hello_world.dir/src/hello_world/main.c.obj: can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file CMakeFiles/hello_world.dir/src/hello_world/main.c.obj
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(crt.S.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(crt.S.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(entry.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(entry.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(entry_user.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(entry_user.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(interrupt.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(interrupt.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(locks.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(locks.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(printf.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(printf.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(sleep.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(sleep.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(syscalls.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(syscalls.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(aes.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(aes.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(apu.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(apu.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(clint.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(clint.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(dmac.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(dmac.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(dvp.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(dvp.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(fft.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(fft.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(fpioa.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(fpioa.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(gpio.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(gpio.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(gpiohs.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(gpiohs.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(i2c.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(i2c.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(i2s.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(i2s.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(kpu.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(kpu.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(plic.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(plic.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(pwm.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(pwm.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(rtc.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(rtc.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(sha256.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(sha256.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(spi.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(spi.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(sysctl.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(sysctl.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(timer.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(timer.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(uart.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(uart.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(uarths.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(uarths.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(utils.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(utils.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(wdt.c.obj): can't link single-float modules with double-float modules
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: failed to merge target specific data of file lib/libkendryte.a(wdt.c.obj)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-__call_atexit.o): in function `.L0 ':
__call_atexit.c:(.text.startup.register_fini+0xa): relocation truncated to fit: R_RISCV_HI20 against symbol `__libc_fini_array' defined in .text.__libc_fini_array section in /usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-fini.o)
__call_atexit.c:(.text.__call_exitprocs+0x4): relocation truncated to fit: R_RISCV_HI20 against `.LANCHOR0'
/usr/lib/gcc/riscv64-elf/11.1.0/rv64imafdc/lp64d/crtbegin.o: in function `deregister_tm_clones':
crtstuff.c:(.text.deregister_tm_clones+0x0): relocation truncated to fit: R_RISCV_HI20 against `__TMC_LIST__'
/usr/lib/gcc/riscv64-elf/11.1.0/rv64imafdc/lp64d/crtbegin.o: in function `register_tm_clones':
crtstuff.c:(.text.register_tm_clones+0x0): relocation truncated to fit: R_RISCV_HI20 against symbol `__TMC_END__' defined in .data section in hello_world
/usr/lib/gcc/riscv64-elf/11.1.0/rv64imafdc/lp64d/crtbegin.o: in function `__do_global_dtors_aux':
crtstuff.c:(.text.__do_global_dtors_aux+0x4): relocation truncated to fit: R_RISCV_HI20 against `completed.1'
/usr/lib/gcc/riscv64-elf/11.1.0/rv64imafdc/lp64d/crtbegin.o: in function `frame_dummy':
crtstuff.c:(.text.frame_dummy+0xa): relocation truncated to fit: R_RISCV_HI20 against `object.0'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-printf.o): in function `printf':
printf.c:(.text.printf+0x0): relocation truncated to fit: R_RISCV_HI20 against symbol `_impure_ptr' defined in .sdata._impure_ptr section in /usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-impure.o)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-scanf.o): in function `scanf':
scanf.c:(.text.scanf+0x0): relocation truncated to fit: R_RISCV_HI20 against symbol `_impure_ptr' defined in .sdata._impure_ptr section in /usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-impure.o)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-vfprintf.o): in function `.L0 ':
vfprintf.c:(.text._vfprintf_r+0xca): relocation truncated to fit: R_RISCV_HI20 against `.LC7'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-vfscanf.o): in function `.L0 ':
vfscanf.c:(.text.__svfscanf_r+0x8c): relocation truncated to fit: R_RISCV_HI20 against symbol `_ctype_' defined in .rodata._ctype_ section in /usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-ctype_.o)
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/lib/libc.a(lib_a-wsetup.o): in function `__swsetup_r':
wsetup.c:(.text.__swsetup_r+0x0): additional relocation overflows omitted from the output
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(interrupt.c.obj): in function `dump_core':
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/bsp/include/dump.h:126: undefined reference to `__extendsfdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/bsp/include/dump.h:126: undefined reference to `__extendsfdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(syscalls.c.obj): in function `dump_core':
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/bsp/include/dump.h:126: undefined reference to `__extendsfdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/bsp/include/dump.h:126: undefined reference to `__extendsfdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(sysctl.c.obj): in function `sysctl_pll_get_freq':
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:993: undefined reference to `__floatunsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:993: undefined reference to `__floatunsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:993: undefined reference to `__floatunsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:993: undefined reference to `__muldf3'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:993: undefined reference to `__floatunsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:993: undefined reference to `__fixunsdfsi'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: lib/libkendryte.a(sysctl.c.obj): in function `sysctl_pll_source_set_freq':
/home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1083: undefined reference to `__floatunsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1084: undefined reference to `__floatunsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1096: undefined reference to `__fixdfsi'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1207: undefined reference to `__gedf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1098: undefined reference to `__floatsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1098: undefined reference to `__muldf3'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1098: undefined reference to `__fixdfsi'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1103: undefined reference to `__floatsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1103: undefined reference to `__gtdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1110: undefined reference to `__muldf3'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1110: undefined reference to `__subdf3'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1112: undefined reference to `__muldf3'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1112: undefined reference to `__ltdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1112: undefined reference to `__ltdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1114: undefined reference to `__fixdfsi'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1128: undefined reference to `__fixdfsi'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1167: undefined reference to `__floatsidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1167: undefined reference to `__floatdidf'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1167: undefined reference to `__muldf3'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1168: undefined reference to `__ltdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1170: undefined reference to `__gtdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1174: undefined reference to `__ltdf2'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1178: undefined reference to `__muldf3'
/usr/lib/gcc/riscv64-elf/11.1.0/../../../../riscv64-elf/bin/ld: /home/alissa/pod/scratch/kendryte-standalone-sdk/lib/drivers/sysctl.c:1178: undefined reference to `__gedf2'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/hello_world.dir/build.make:98: hello_world] Error 1
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/hello_world.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
tuupola commented 2 years ago

I use the following to compile the toolchain. Works fine with K210 and GD32V based boards. For K210 the --with-arch=rv64imafcand --with-abi=lp64f are the magic flags.


$ git clone --recursive https://github.com/riscv-collab/riscv-gnu-toolchain.git
$ cd riscv-gnu-toolchain

$ mkdir /opt/riscv
$  ./configure --prefix=/opt/riscv --enable-multilib --with-cmodel=medany \
   --with-arch=rv64imafc --with-abi=lp64f
$ make -j8
$ make install
``