很多时候我们要处理的数据,不仅仅是整数和字符串,还有浮点数即小数。在多媒体数据处理方面表现的更多。是不是所有的CPU都支持,浮点运算呢?答案:不是。
1、问题描述
2、原因
该错误表明使用了不正确或不支持的VFP(virtual float point)浮点运算方式。
- 不支持的VFP编译:MCU不支持VFP(hard)计算;
- 不一致的VFP编译:链接的Lib中VFP计算和App中编译VFP计算选项不一致;
3、解决方案
方案1
检查APP的编译选项 CFLAGS
的VFP的计算类型:
FABI := hard //这里把hard改为softfp
CFLAGS += -mfloat-abi=$(FABI)
方案2
更换编译器版本。
方案3
重编译Lib库,CFLAGS
中添加或修改-mfloat-abi=hard
(须和APP中编译选项一致),一般库是默认软浮点
最简步骤
1、下载并解压libcurl源码。
2、运行configure,产生Makefile文件,--frefix表示安装目录。
./configure --prefix=/home/zhong/curl --disable-shared --enable-static --without-libidn --without-ssl --without-librtmp --without-gnutls --without-nss --without-libssh2 --without-zlib --without-winidn --disable-rtsp --disable-ldap --disable-ldaps --disable-ipv6
3、gcc -o simple simple.c -L../lib -lcurl -pthread
4、编译成功。
4、实例
环境:
工具链:arm-melis-eabi-
MCU: Cortex-A7-SMP
libmediainfo.a编译中未指明VFP运算方式,默认使用了-mfloat-abi=softfp
APP指明-mfloat-abi=hard
,链接时报错“xxx uses VFP register arguments xxx does not …”
重编译libmediainfo.a库,并在CFLAGS
中指定-mfloat-abi=hard
即可。
libcurl(http和https)
ZT
CURLSSL_DIR = $(ROOTDIR)/ota/ua/libs
CURLSSL_LIB = $(CURLSSL_DIR) -lcurl -lssl -lcrypto
git HTTP>[curl_init:4846][2020-12-14 18:27:09][info]curl_version:libcurl/7.63.0!
7.63.0 HTTP>[curl_init:4846][2020-12-14 18:42:42][info]curl_version:libcurl/7.63.0 zlib/1.2.8!
7.65.0 HTTP>[curl_init:4846][2020-12-14 18:46:51][info]curl_version:libcurl/7.65.0!
./configure --host=arm-oe-linux-gnueabi --without-ssl --enable-static
./configure --host=arm-oe-linux-gnueabi --without-ssl --without-zlib --enable-static
HW
export PATH=$PATH:/opt/MH5000/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
export CFLAGS="-mfloat-abi=hard"
./configure --host=arm-linux-gnueabihf --without-ssl --enable-static
make
make install
HTTP>[curl_init:4188][1970-01-01 01:43:55][info]curl_version:libcurl/7.63.0!
HTTP>[curl_init:4188][1970-01-01 00:08:53][info]curl_version:libcurl/7.65.0!
me
./configure --host=arm-oe-linux-gnueabi --with-ssl --enable-static
make
make install
cp /usr/local/lib/libcurl.a ./
CURLSSL_DIR = $(ROOTDIR)/ota/ua/libs
CURLSSL_LIB = $(CURLSSL_DIR) -lcurl -lssl -lcrypto
git上 HTTP>[curl_init:4315][2020-12-14 15:06:38][info]curl_version:libcurl/7.65.0 OpenSSL/1.0.2h zlib/1.2.8!
7.63.0 HTTP>[curl_init:4315][2020-12-14 15:45:41][info]curl_version:libcurl/7.63.0 OpenSSL/1.0.2h zlib/1.2.8!
7.65.0 HTTP>[curl_init:4315][2020-12-14 15:55:01][info]curl_version:libcurl/7.65.0 OpenSSL/1.0.2h zlib/1.2.8!
qiao
./configure --with-ssl=/usr/local/ssl –-disable-ldap –-disable-ldaps --enable-static