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

Contiki编译时出现multiple definition多重定义错误如何解决?

解决方案

错误出现的核心原因是你的Makefile配置导致test_randnum.c被重复编译,链接阶段出现同名符号冲突。

修复方法

删除Makefile中下面这一行即可:

CONTIKI_TARGET_SOURCEFILES += test_randnum.c

原因说明

你已经通过CONTIKI_PROJECT = test_randnum指定了项目的主程序名,Contiki内置的编译规则会自动将同名的test_randnum.c加入编译队列。额外将该文件加入CONTIKI_TARGET_SOURCEFILES会导致编译系统两次引入该源文件,最终链接时出现multiple definition错误。

修改后的完整Makefile参考:

DEFINES+=PROJECT_CONF_H=\"project-conf.h\"

CONTIKI_PROJECT = test_randnum

all: $(CONTIKI_PROJECT)

CONTIKI = ../../contiki/
include $(CONTIKI)/Makefile.include

可选优化建议

你代码里当前用的是标准库的rand(),Contiki原生提供了更适合嵌入式场景的random_rand()接口,你可以打开注释里的random_init(node_id)代码,改用自带的随机数接口,避免不同平台标准库实现差异带来的问题。

内容的提问来源于stack exchange,提问作者João Sacramento

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:15:02