小型设备C编译器(SDCC)将生成IHX(Intel HEX)文件,即使链路步骤中存在未定义的参考错误。在Makefile中使用SDCC时,此行为会导致问题,因为如果您将IHX文件设置为您的make目标,则无法知道先前的链接尝试失败的好方法。

是否有一种方法可以告诉SDCC在链接期间有未定义的参考时抑制IHX输出?如果没有,最好的解决方法是什么?(我已经想到了一个)。

此外,我对为什么 SDCC如果有人知道,为什么 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.
.

但是不要尝试编译它,因为SDCC已经创建了IHX文件。

有帮助吗?

解决方案

我对SDCC不了解任何东西,所以我很抱歉,我无法回答关于输出是否可以抑制的问题或为什么SDCC设计为此。

我可以想到一个工作:在成功构建后重命名ihx文件,并使用新名称作为make目标。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top