簡體   English   中英

ssize_t 在 dpdk 標頭中未定義

[英]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 目標,請執行以下步驟:

  1. 執行find /usr/include/ -name types.h來確定本地構建的正確文件(這是因為當前的 cflags 有 -march=native)
  2. 將 CFLAGS 從-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM