当我将我的可执行文件链接到我自己使用 Crosstool-NG 构建的 libc 时,我的程序的执行速度比我将我的可执行文件链接到由一家名为 Nucleisys 的公司构建并由 Platformio 项目提供的 libc 慢得多。 从视觉上看,它不会欺骗。大约 2 米 30 对我的超过 10 米。
实际上,当我这样进行时:
mv ~/x-tools/riscv32-unknown-elf/riscv32-unknown-elf/lib/rv32imac/ ~/x-tools/riscv32-unknown-elf/riscv32-unknown-elf/lib/original_rv32imac
如果我重新编译,显然编译失败:
error : /home/th/x-tools/riscv32-unknown-elf/lib/gcc/riscv32-unknown-elf/9.4.0/../../../../riscv32-unknown-elf/lib/libc.a(lib_a-atexit.o): can't link double-float modules with soft-float modules
...
然后我部署 Nuclei 库:
cp -a ~/.platformio/packages/toolchain-gd32v/riscv-nuclei-elf/lib/rv32imac ~/x-tools/riscv32-unknown-elf/riscv32-unknown-elf/lib/
除此之外我什么都不做。我不碰我的 makefile。然后,我重新编译,只看到执行速度。 我错过了什么?
两个 libc 似乎是相同的,它们是 soft-float ABI。
PS : 我在裸机环境中,我用 -march=rv32imac -mabi=ilp32 编译