今天在技術(shù)交流群看到這么一個問題,大概意思就是:同一個代碼工程(源碼不變),因Keil版本不同,程序(hex)卻變了。
對于很多新手來說,肯定會納悶,明明代碼沒變,為啥結(jié)果不一樣了呢? 這其中的“變量”就Keil版本從V5.14變?yōu)榱薞5.28。
而優(yōu)化選項又沒變,那什么變了? 是的,有經(jīng)驗的老司機肯定看出來了,就是編譯器的版本變了。
不同版本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:
而這個工程源代碼沒變、優(yōu)化選項(配置)沒變,編譯出來的Hex文件卻不一樣:
如何解決這種問題?
1.使用相同開發(fā)環(huán)境
這里的開發(fā)環(huán)境主要指Keil版本,比如:以前用Keil V5.14,現(xiàn)在也繼續(xù)使用V5.14版本。
當然,如果條件允許,操作系統(tǒng)(Windows)也最好一樣,有可能會因為操作系統(tǒng)導致編譯結(jié)果一樣。
上個月才給大家分享過一篇文章:軟件工具沒事別瞎升級
2.使用相同編譯器
當然,如果不能做到上面說的軟件版本以及系統(tǒng)一樣(有的人就喜歡新版本的軟件),可以使用相同版本編譯器來盡量保持一致。
不管是這里說的Keil Arm Compiler 編譯器,還是GCC等工具,道理都是一樣。
Keil的編譯器可以修改,可能很多小伙伴還不知道,這里就給大家說一下。
更換Keil編譯器的方法比較簡單,到Keil(Arm)官方下載你需要版本的編譯器,自己安裝一下即可。
方法比較簡單,這里就不講述了,具體可以參看我之前分享的文章:手把手教你升級Keil MDK的ARM編譯器
本文就分享到這里,大家如果還有遇到類似的奇奇怪怪的問題,歡迎留言討論。
審核編輯:湯梓紅
-
單片機
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631989 -
WINDOWS
+關(guān)注
關(guān)注
3文章
3521瀏覽量
88317 -
keil
+關(guān)注
關(guān)注
68文章
1210瀏覽量
166580 -
編譯器
+關(guān)注
關(guān)注
1文章
1617瀏覽量
49015
原文標題:單片機代碼不變,hex卻變了?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論