即使在链接步骤中存在未定义的引用错误,小型设备C编译器(SDCC)也会生成ihx(英特尔十六进制)文件。在Makefile中使用SDCC时,此行为会导致问题,因为如果将ihx文件设置为make目标,make就无法很好地知道以前的链接尝试已失败。
当链接期间存在未定义的引用时,有没有方法告诉SDCC抑制ihx输出?如果不是,最好的解决方法是什么?
另外,我对
如果有人知道的话,SDCC就是这样设计的。
您有一个名为test.c的文件,它调用一个未定义的函数:
void foo();
void main()
{
foo();
}
您有一个简单的Makefile,用于从test.c构建test.ihx:
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.
但是make没有尝试编译它,因为SDCC已经创建了ihx文件。