windows 下安装arm v7虚拟机器_你用的ARM处理器该选择哪个编译器?-后续

5aafa7b3a695ac6e4a8d512fc41b1802.png

上篇文章简单说了下ARM编译器的选择,本篇文章通过一些例子演示下。

测试代码如下:

void main(int argc, char **argv)
{
    double c = 1.0000000000000000001;
    for(int i=0;i<1000000000;i++)
        c *= c;
    printf("c = %.300fn", c);
}

一、平台1测试(ARMV7指令集,支持硬件浮点)

floathard程序是编译时指定浮点计算为硬件浮点,指令集为V7。

floatsoft程序是编译时指定浮点计算为软件浮点,指令集为V7。

测试截图如下,可以看到硬件浮点的计算要快。

b3a3385352e887ea450021cb880c14b9.png

二、平台2测试(ARMV7指令集,不支持硬件浮点)

floathard程序是编译时指定浮点计算为硬件浮点,指令集为V7。

floatsoft程序是编译时指定浮点计算为软件浮点,指令集为V7。

测试截图如下,可以看到运行硬件浮点的程序时提示错误为 "not found",今后如果编写的程序执行时碰到类似错误提示可以考虑下是否为编译器的浮点选项配置不正确。

b38f9232697929d3031098a465d284ed.png

三、平台3测试(ARMV5指令集,不支持硬件浮点)

floathard程序是编译时指定浮点计算为硬件浮点,指令集为V7。

floatsoft程序是编译时指定浮点计算为软件浮点,指令集为V7。

测试截图如下,由于V5指令集的硬件无法运行V7指令集的程序,可以看到运行程序时提示错误为 "syntax error: unexpected word",今后如果编写的程序执行时碰到类似错误提示可以考虑下是否为编译器的指令集配置不正确。

1415242c3e19fe11ca57ede439b8578c.png

float111程序是编译时指定浮点计算为软件浮点,指令集为V5。

可以看到程序正常运行了,由于此CPU主频低,架构老,程序执行时间非常长。

333219d404bf963c14cc58b2c8d591d8.png

四、windows下能开发linux应用吗?

这里说的windows是不使用虚拟机,wsl的情况。

答案是肯定的,可以使用msys2。

我的方案是先安装scoop,通过scoop再安装msys2,在msys2中再通过pacman安装各种需要的软件和库。

在msys2,c盘对应于/c目录,d盘对应于/d目录,以此类推。

如果msys2的pacman中的ARM编译器的版本不满足要求,可以从下面网址安装指定版本的编译器:

https://releases.linaro.org/components/toolchain/binaries/

通过上述方法可以满足嵌入式linux开发绝大多数的工作,唯一不方便的地方是涉及到文件系统的时候,主要是根文件系统的制作,因为windows不支持软链接,编译出来一个库之后,linux下的.so是链接到底层的.so.x.x.x,而windows下.so其实也是一个真实文件,和.so.x.x.x是相同的文件。

欢迎大家关注我的公*号:embedded_bug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值