我知道正常的方式,我试过了,但它似乎不起作用。如何在Linux内核中使用另一个c文件的变量?
在LINUX /网/排程/ sch_htb.c,我定义变量:
unsigned int queuelength;
EXPORT_SYMBOL(queuelength);
约在变量,而不是重要的一些行动。
在LINUX /网/的IPv4/tcp_dctcp.c,
extern unsigned int queuelength;
错误配网/内置in.o:
In function `dctcp_update_alpha':
linux/net/ipv4/tcp_dctcp.c:230: undefined reference to `queuelength'
内核版本为V4.6。
都是文件('网/排程/ sch_htb.c'和'网/支持IPv4/tcp_dctcp.c')被编译为内核核心的** **的部分(即不作为模块)?如果是这样,则不需要'EXPORT_SYMBOL'。请注意,文件的该汇编'排程/ sch_htb.c'取决于'CONFIG_NET_SCH_HTB'配置选项。如果将它作为模块进行编译,则不能使用内核中定义的符号。 – Tsyvarev
我检查了 '的.config' 文件,其示出了 “CONFIG_TCP_CONG_DCTCP = Y ” 和 “CONFIG_NET_SCH_HTB = M”。我想,也许我应该从“M”到“Y”它改变和删除“EXPORT_SYMBOL'.Then我successfuly编译它? – Hunter
我还有一个问题。我需要使用变量“queuelength”也在其他代码(OVS)。所以,也许我一定要预订“EXPORT_SYMBOL”和编译为模块?我不知道这件事,但是它没有很好地工作,而无需修改网/支持IPv4/tcp_dctcp.c.What我应该做处理在同一时间的两个问题? – Hunter