详细说一下这个 gcc 的问题:
gcc 的 configure 有个参数 --with-fp-32= ,用来设置调用不同长度的浮点单元,可以设置 32/xx/64 。xx 是同时能支持 32 和 64 。对应 CFLAGS 分别是 -mfp32 、 -mfpxx 、 -mfp64 。
如果不设置,o32 情况下,就不会自动使用 hard-float 。而是用默认的 soft-float ,也就是不用硬件浮点单元。
gcc 在 configure 的时候忘了设置,也可以通过 CFLAGS 里面增加对应的 -mfp?? 参数来实现硬浮点的使用。不过这样调用函数库的程序并没有太大的帮助,因为之前的函数库都还是软浮点。
而且还一点,这货没有 --with-fp= 这个参数,必须加尾部的 -32 才是一个完整的参数。所以在 32 位系统下,也必须有 -32 的尾缀。
总结来说,就是不管龙芯跑什么系统,gcc 都必须加这个参数,不然 32 位环境就默认用软浮点降低性能。
gcc 的 configure 有个参数 --with-fp-32= ,用来设置调用不同长度的浮点单元,可以设置 32/xx/64 。xx 是同时能支持 32 和 64 。对应 CFLAGS 分别是 -mfp32 、 -mfpxx 、 -mfp64 。
如果不设置,o32 情况下,就不会自动使用 hard-float 。而是用默认的 soft-float ,也就是不用硬件浮点单元。
gcc 在 configure 的时候忘了设置,也可以通过 CFLAGS 里面增加对应的 -mfp?? 参数来实现硬浮点的使用。不过这样调用函数库的程序并没有太大的帮助,因为之前的函数库都还是软浮点。
而且还一点,这货没有 --with-fp= 这个参数,必须加尾部的 -32 才是一个完整的参数。所以在 32 位系统下,也必须有 -32 的尾缀。
总结来说,就是不管龙芯跑什么系统,gcc 都必须加这个参数,不然 32 位环境就默认用软浮点降低性能。