You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C项目静态库编译正常但主测试程序链接失败,如何修正Makefile?

问题原因

你的test_main_driver目录下的Makefile存在变量名拼写错误,定义的目标文件列表变量为OBJS,但链接规则中引用的是未定义的program_OBJS,导致链接阶段没有传入已编译完成的main.o,链接器找不到程序入口函数main,因此抛出符号未找到的错误。

修复方案

修改test_main_driver/Makefile中的链接规则,将引用的变量名替换为正确的OBJS即可:
原来的错误规则:

$(program_NAME): $(OBJS)
    $(LINK.c) $(program_OBJS) -o $(program_NAME)

修改为:

$(program_NAME): $(OBJS)
    $(LINK.c) $(OBJS) -o $(program_NAME)
可选优化

为了兼容不同版本链接器的依赖顺序检查,建议将库链接参数放在编译目标文件之后,调整后的规则更规范:

$(program_NAME): $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) -o $(program_NAME) $(LDFLAGS)

修复后执行make clean && make即可正常生成可执行文件。

内容的提问来源于stack exchange,提问作者Qiang Xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:54:03