首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在链接步骤期间在Makefile中使用SDCC的问题

在链接步骤期间在Makefile中使用SDCC的问题
EN

Stack Overflow用户
提问于 2010-07-22 18:33:18
回答 1查看 1.4K关注 0票数 1

即使链接步骤中存在未定义的引用错误,小型设备C编译器(SDCC)也将生成ihx (Intel Hex)文件。在Makefile中使用SDCC时,此行为会导致问题,因为如果将ihx文件设置为make目标,那么make无法很好地知道以前的链接尝试失败。

是否有一种方法,当链接过程中有未定义的引用时,告诉SDCC抑制ihx输出?如果不是,什么是最好的解决办法?(我已经想到了)。

此外,我感兴趣的是,为什么SDCC是这样设计的,如果有人知道。

这里是问题的一个例子:

您有一个名为test.c的文件,它调用一个未定义的函数:

代码语言:javascript
复制
void foo();
void main()
{
    foo();
}

您有一个用于从test.c构建test.ihx的简单Makefile:

代码语言:javascript
复制
test.ihx: test.c
    sdcc test.c

您尝试第一次编译test.c,结果失败了:

代码语言:javascript
复制
C:\test>make
sdcc test.c

?ASlink-Warning-Undefined Global '_foo' referenced by module 'test'
make: *** [test.ihx] Error 1

您试图通过更改不属于ihx的依赖项(例如Makefile)来解决问题,然后再次编译:

代码语言:javascript
复制
C:\test>make
make: `test.ihx' is up to date.

但是make没有尝试编译它,因为SDCC已经创建了ihx文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-22 18:45:28

我对sdcc一无所知,所以很抱歉,我不能回答您的问题:输出是否可以被抑制,或者为什么sdcc是这样设计的。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3312165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档