wolfssl是GPL2.0,无法商用,只能尝试mbedtls,这个是免费开源的。
下载地址:https://gitee.com/Kono2019/mbedtls.git
github经常上不了,gitee比较方便。
下载完了,怎么编译呢,我需要编译riscv的。
一开始通过cmake -DCMAKE_C_COMPILER=riscv-nuclei-elf-gcc,会编一个test的程序,但是很快报“error: unrecognized command line option '-rdynamic'”,说我的gcc不支持dynamic,折腾了半天也没解决。
然后直接export CC=riscv-nuclei-elf-gcc
make
编起来了,但报了一些错误,这些错误都可以通过配置include/mbedtls/config.h解决:
我修改是这样的:
注释掉了:
MBEDTLS_FS_IO,
MBEDTLS_NET_C,
MBEDTLS_PSA_CRYPTO_STORAGE_C,
MBEDTLS_PSA_ITS_FILE_C,
MBEDTLS_TIMING_C。
定义了:
MBEDTLS_NO_PLATFORM_ENTROPY。
顺利编译通过。
然后make install。
后续:
当我把编译出的三个Lib库放到SDK中,link的时候却报错:
原来我的sdk设置的arch和abi是RISCV_ARCH=rv32imac RISCV_ABI=ilp32,是不支持double float的,但是我在编译mbedtls的时候并没有指定arch和abi,默认是rv32imfd好像,所以不匹配,
于是重新编译mbedtls,折腾了半天,mbedtls的Makefile分散在多个目录下,而且有点不光要改CFLAGS还得改LDFLAGS,反正就是指定-march=rv32imac -mabi=ilp32就行。最后编译成功,把新生成的库放到sdk中,编译link成功!!!