rebuild mcs51.lib

Posted by: 邱小新 at 下午5:04 in

今天為了試驗 SDCC code banking,一直在試 crtbank.asm,怎麼弄都不行,最後想到直接置掉 mcs51.lib 看看。結果,當我下 sdcclib -m mcs51.lib,竟然回我一個錯誤訊息。

sdcclib -m mcs51.lib ERROR: File 'mcs51.lib' was not created with 'sdcclib'

最後,直接下 sdcclib -a mcs51.lib crtbank.rel,把檔案暴力加進去,結果....裏面檔案都不見了,只剩下 crtbank.rel

sdcclib -a mcs51.lib crtbank.rel sdcclib -m mcs51.lib crtbank.rel

當然這樣是不能用的啦,其它的 startup code 都不見了,根本無法編譯。所以又手動把 C:\Program Files\SDCC\lib\src\mcs51 下的 asm 全部編進 mcs51.lib。傻眼的是雖然可以加到 SDCC,但是搞出來的 hex 檔燒進去竟然動不了,真是怪了。

只好又去拜酷狗大神,歷經千幸萬苦,最後找到原始編譯 mcs51.lib 才解決了問題。原來我一直使用 asx8051 -ol 是不對的,應該下 asx8051 -plosgff 才對。而且 sdcclib 也不用加 -a 參數。

del mcs51.lib del *.rel asx8051 -plosgff crtbank.asm asx8051 -plosgff crtcall.asm asx8051 -plosgff crtclear.asm asx8051 -plosgff crtpagesfr.asm asx8051 -plosgff crtstart.asm asx8051 -plosgff crtxclear.asm asx8051 -plosgff crtxinit.asm asx8051 -plosgff crtxstack.asm sdcclib mcs51.lib crtbank.rel sdcclib mcs51.lib crtcall.rel sdcclib mcs51.lib crtclear.rel sdcclib mcs51.lib crtpagesfr.rel sdcclib mcs51.lib crtstart.rel sdcclib mcs51.lib crtxclear.rel sdcclib mcs51.lib crtxinit.rel sdcclib mcs51.lib crtxstack.rel copy /Y "C:\Program Files\SDCC\lib\src\mcs51\mcs51.lib" "C:\Program Files\SDCC\lib\small"

0 意見

張貼留言