我知道正常的方式,我試過了,但它似乎不起作用。如何在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