[英]ssize_t undefined in a dpdk header
我安裝了 DPDK,我正在嘗試用它編譯代碼。 這在我的 WSL 機器上工作,但是在測試服務器上,使用相同的 dpdk 安裝,我收到錯誤:
/usr/local/include/rte_mempool.h: error: unknown type name 'ssize_t'
我注意到這個頭文件不包括 /sys/types.h,但它也不包括在它工作的機器上。 我不知道它應該來自哪里,但它來自某個地方。
如何讓這些標頭了解 ssize_t?
如評論中所述:
編譯器選項包括-std=c99 -O3 -march=native -I/usr/local/include -include rte_config.h
和一大堆-l
選項(dpdk 的 make 結構添加了這些選項)。 這促使我運行gcc --version
並且工作的是 Ubuntu gcc 9.3.0
,而損壞的是gcc 5.4.0
。 似乎可能是 dpdk 和安裝的 gcc 之間不兼容。
正如@JonathanLeffier 的評論中所提到的,問題的根本原因是在傳遞 gcc 選項--std=c99
時包括sys/types.h 。 在不修改 DPDK 或示例代碼的情況下,最簡單的修復方法是將types.h
的路徑包含在 cflags 中。
如果本機構建用於 x86_64 目標,請執行以下步驟:
find /usr/include/ -name types.h
來確定本地構建的正確文件(這是因為當前的 cflags 有 -march=native)-std=c99 -O3 -march=native -I/usr/local/include -include rte_config.h
為-std=c99 -O3 -march=native -I/usr/local/include -include rte_config.h --include=/usr/include/[target-machine]/sys/types.h
注意:在我的拙見中,請使用pkg-config
為共享和靜態二進制文件填充正確的 CFLAGS 和 LDFLAGS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.