我试图运行contiki3.x在contiki-ng上编写的代码,我得到了一个编译错误,它声明了对‘rpl_set_root’的未定义引用,尽管我包含了“net/routing/rpl-古典/rpl.h”。我打开了源代码rpl-古典/rpl.h和rpl-古典/rpl.c-我可以清楚地看到功能在那里。
下面的代码会产生编译错误。
uip_ds6_addr_add(&ipaddr,0,ADDR_MANUAL);
root_if = uip_ds6_addr_lookup(&ipaddr);
if(root_if != NULL) {
rpl_dag_t *dag;
dag = rpl_set_root(RPL_DEFAULT_INSTANCE,(uip_ip6addr_t *)&ipaddr);
uip_ip6addr(&ipaddr, 0xaaaa, 0, 0, 0, 0, 0, 0, 0);
rpl_set_prefix(dag, &ipaddr, 64);
} else {
printf("No DAG created\n");
}发布于 2021-03-16 14:56:04
默认情况下,Contiki-NG启用了RPL-lite,它没有此功能。
要切换到RPL经典,请将这一行添加到应用程序的Makefile中:
MAKE_ROUTING = MAKE_ROUTING_RPL_CLASSIC然后,make clean并再次构建应用程序。
https://stackoverflow.com/questions/66656966
复制相似问题