1
即使鏈接步驟中存在未定義的參考錯誤,小型設備C編譯器(SDCC)也會生成ihx(Intel Hex)文件。當在Makefile中使用SDCC時,此行爲會導致問題,因爲如果將ihx文件設置爲製作目標,則無法知道先前的鏈接嘗試失敗。鏈接步驟中在Makefile中使用SDCC的問題
有沒有辦法告訴SDCC抑制ihx輸出鏈接期間有一個未定義的參考?如果不是,什麼是最好的解決方法?(我已經想到了一個)。
另外,我對感興趣爲什麼 SDCC是這樣設計的,如果有人知道的話。
這裏的問題的一個例子:
您有一個名爲test.c的文件,該文件調用一個未定義功能:
void foo();
void main()
{
foo();
}
你有一個簡單的Makefile從構建test.ihx test.c的:
test.ihx: test.c
sdcc test.c
嘗試編譯test.c以首次失敗:
C:\test>make
sdcc test.c
?ASlink-Warning-Undefined Global '_foo' referenced by module 'test'
make: *** [test.ihx] Error 1
您嘗試改變的東西是不是IHX的依賴關係(如Makefile文件)來解決這個問題,並嘗試重新編譯:
C:\test>make
make: `test.ihx' is up to date.
但使不嘗試編譯它,因爲SDCC已經創建了ihx文件。
酷,這種解決方法聽起來比我的好。 – 2010-07-22 20:45:43