硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4525|回复: 4
收起左侧

[MDK] 原以为ARM Compiler 6编译速度很快,原来竟然是个bug

[复制链接]

3

主题

14

回帖

23

积分

新手上路

积分
23
发表于 2019-9-15 11:38:02 | 显示全部楼层 |阅读模式
最近常看到网上有人用了ARM Compiler 6,各种爽,特别是编译速度那个快呀,像飙车一样。于是我也试了一下。
我的开发环境是MDK 5.26.2,在options的Target页面中选了ARM Compiler V6.10.1。

Target

Target


编译器语言选项选择gnu99

C_C++

C_C++

好,开始编译。等待的时候,感觉编译速度真是刷刷地飞快。

Speed

Speed

总共不到20秒就编译完了。
但是,接下来用的时候,感觉就不对了。在源文件中,想用右键跳转到函数的定义,就像下图一样

GotoDefine

GotoDefine

结果什么都没发生……WTF?!
仔细一看,状态栏上有一行小字

NoInform

NoInform

说是没有浏览信息。
去检查options的Output页面

Output

Output

看到Browse Information选项还在明晃晃地挂着呢。
忽然想到,这编译的速度提升,是不是因为实际上没有生成Browse Information而加速的?
换回到ARM Compiler 5,去掉Browse Information再编译一次。

Compiler5

Compiler5

这次感觉速度也是刷刷地,跟ARM Compiler 6的时间差基本可以忽略
原来Compiler V6的速度感,竟然是一个bug带来的错觉。
也许这是MDK跟我们开的一个玩笑……
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107518
QQ
发表于 2019-9-15 13:16:24 | 显示全部楼层
看此贴楼主就明白了,使用AC6要等待页脚下面的进度条才可以使用go to def,使用IAR也是。

【测试帖】比较IAR,MDK的AC5和AC6以及Embedded Studio的CLANG和GCC编译HAL库性能(2019-04-06更新)
http://www.armbbs.cn/forum.php?m ... id=93102&fromuid=58
(出处: 硬汉嵌入式论坛)


回复

使用道具 举报

3

主题

14

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2019-9-16 06:53:38 | 显示全部楼层
eric2013 发表于 2019-9-15 13:16
看此贴楼主就明白了,使用AC6要等待页脚下面的进度条才可以使用go to def,使用IAR也是。

【测试帖】比 ...

多谢大神指教!
另外有个问题,就是用AC6之后,中文字符串编译会有警告,就像下面的例子。该怎么解决?

mian.c文件中的定义:
uint8_t aTxWord[] = "五星镇彩,光照玄冥。五天魔鬼,亡身灭形。神兵急急如律令,疾——!\r\n";

编译的提示如下:
../Src/main.c(67): warning: illegal character encoding in string literal [-Winvalid-source-encoding]
uint8_t aTxWord[] = "<CE><E5><D0><C7><D5><F2><B2><U+02A3><AC><B9><E2><D5><D5><D0><FE><U+06A4><A1><A3><CE><E5><CC><EC><U+0127><B9><ED><A3><AC><CD><F6><C9><ED><C3><F0><D0><U+03A1><A3><C9><F1><B1><F8><BC><B1><BC><B1><C8><E7><C2><C9><C1><U+E8EC><BC><B2><A1><AA><A1><AA><A3><A1>\r\n";
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107518
QQ
发表于 2019-9-16 10:42:44 | 显示全部楼层
碧云天书 发表于 2019-9-16 06:53
多谢大神指教!
另外有个问题,就是用AC6之后,中文字符串编译会有警告,就像下面的例子。该怎么解决?
...

要将这个源码文件,使用记事本另存为UTF-8。

这样的话,你的应用程序里面需要显示GBK编码汉字的话,就不方便了。
回复

使用道具 举报

3

主题

14

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2019-9-16 13:15:19 | 显示全部楼层
eric2013 发表于 2019-9-16 10:42
要将这个源码文件,使用记事本另存为UTF-8。

这样的话,你的应用程序里面需要显示GBK编码汉字的话,就 ...

谢谢硬汉!

因为在中文环境下,警告warning: illegal character encoding in string literal [-Winvalid-source-encoding]就是多余的。我查了一下忽略警告的办法,发现加入下面一行

#pragma clang diagnostic ignored "-Winvalid-source-encoding"

就可以消除警告,整个世界都清净了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-4 14:09 , Processed in 0.257678 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表