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

Keil編譯器優(yōu)化問題
Keil C51編譯器用戶手冊 中文版
Keil C編譯器編程規(guī)則和代碼優(yōu)化

編譯器_keil的優(yōu)化選項(xiàng)問題
控制IRQ和FIQ中斷的編譯器內(nèi)部函數(shù) 基于Keil MDK
如何在Keil MDK中使用GCC編譯器工具鏈
使用keil開發(fā)華大MCU時(shí)的版本問題

如何在e2 studio中添加IAR和Keil的ARM編譯器
使用ARMClang V6版本編譯器出現(xiàn)錯誤的解決方法

評論