DPDK helloworld編譯過程

2021-09-19 15:10:33 字數 1955 閱讀 3703

參照連線 裡面的dpdk安裝過程

安裝根據上述位址教程安裝dpdk 和 libpcap

執行helloworld參照 dpdk應用基礎

環境:ubuntu16.0464位

dpdk:16.11.1

libpcap 1.8.1

儲存提取的/home資料夾下;

安裝依賴庫m4、bison、flex;

sudo apt-get install m4 bison flex
進入提取出來的libpcap-1.8.1資料夾;

cd libpcap-1.8.1
在特權使用者下配置安裝libpacap;

sudo su

./configure

make

make install

安裝成功,但是後面安裝dpdk的時候卻提示找不到libpcap.so.1,因為libpcap.so.1預設安裝到了/usr/local/lib下,我們做乙個符號鏈結到/usr/lib/下即可。

sudo ln -s /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1
libpacap 是dpdk 可選的編譯工具之一,libpacap的標頭檔案和和庫(libpcap-devel),用於編譯和使用基於libpcap的pmd。pmd在預設情況下禁用,可以在編譯時的配置檔案中通過config_rte_librte_pmd_pcap=y啟用。

解壓提取到/home

配置並編譯dpdk,架構為64位x86linux系統,gcc編譯

cd dpdk-stable-16.11.1

sed -ri 's,(pmd_pcap=).*,\1y,' build/.config

make

在dpdk的例項執行前都必須配置大頁快取

預留hugepage給dpdk使用(在這使用)

hugepages=1024
對於其他hugepage頁面尺寸設定如下:頁面尺寸必須特別制定或者將該尺寸設定為系統預設的巨頁大小。例如4個1gb的頁面

default_hugepagesz=1 ghugepagesz=1g hugepages=4
在/sys/devices/目錄下的nr_hugepages中設定hugepage大小

echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kb/nr_hugepages
不同系統可能不一樣可以用find找一下nr_hugepags具體在哪個資料夾下

當hugepage 被預留成功,dpdk就可以使用hugepage記憶體:

mkdir /mnt/huge

mount -t hugetlbfs nodev /mnt/huge

如果需要永久使用乙個掛載點,可以將這個掛載點的資訊寫入/etc/fstab檔案中:

nodev /mnt/huge hugetlbfs deault 0 0
dpdk 編譯完成後,它會包含應用程式所需的所有依賴庫與標頭檔案。當應用程式在linux上dpdk環境編譯時,必須輸出下列變數。

rte_sdk :指向dpdk的安裝目錄

rte_target:指向dpdk目標環境的目錄

靜態聯編與動態聯編

在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...

靜態聯編和動態聯編

聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...

靜態聯編和動態聯編

聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...