在链接步骤中使用SDCC在Makefile中使用SDCC
-
27-09-2020 - |
题
小型设备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目标。
不隶属于 StackOverflow