今天在技術交流群看到這么一個問題,大概意思就是:同一個代碼工程(源碼不變),因Keil版本不同,程序(hex)卻變了。
對于很多新手來說,肯定會納悶,明明代碼沒變,為啥結果不一樣了呢? 這其中的“變量”就Keil版本從V5.14變為了V5.28。
而優化選項又沒變,那什么變了? 是的,有經驗的老司機肯定看出來了,就是編譯器的版本變了。
不同版本Keil,編譯器可能不同
為了驗證這個問題,我安裝了以前老版本的Keil V5.28和V5.36,默認自帶的編譯器AC(Arm Compiler),不管是AC5,還是AC6版本都不一樣。
Keil V5.28默認自帶編譯器為AC5.06-6和AC6.12:
Keil V5.36默認自帶編譯器為AC5.06-7和AC6.16:
而這個工程源代碼沒變、優化選項(配置)沒變,編譯出來的Hex文件卻不一樣:
如何解決這種問題?
1.使用相同開發環境
這里的開發環境主要指Keil版本,比如:以前用Keil V5.14,現在也繼續使用V5.14版本。
當然,如果條件允許,操作系統(Windows)也最好一樣,有可能會因為操作系統導致編譯結果一樣。
上個月才給大家分享過一篇文章:軟件工具沒事別瞎升級
2.使用相同編譯器
當然,如果不能做到上面說的軟件版本以及系統一樣(有的人就喜歡新版本的軟件),可以使用相同版本編譯器來盡量保持一致。
不管是這里說的Keil Arm Compiler 編譯器,還是GCC等工具,道理都是一樣。
Keil的編譯器可以修改,可能很多小伙伴還不知道,這里就給大家說一下。
更換Keil編譯器的方法比較簡單,到Keil(Arm)官方下載你需要版本的編譯器,自己安裝一下即可。
方法比較簡單,這里就不講述了,具體可以參看我之前分享的文章:手把手教你升級Keil MDK的ARM編譯器
本文就分享到這里,大家如果還有遇到類似的奇奇怪怪的問題,歡迎留言討論。
審核編輯:湯梓紅
-
單片機
+關注
關注
6042文章
44617瀏覽量
637534 -
WINDOWS
+關注
關注
4文章
3567瀏覽量
89115 -
keil
+關注
關注
68文章
1214瀏覽量
167155 -
編譯器
+關注
關注
1文章
1642瀏覽量
49238
原文標題:單片機代碼不變,hex卻變了?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論