差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
cpp:linux_kernel:build_driver:build_nic_on_centos6.7 [2016/10/12 13:19]
tony 建立
cpp:linux_kernel:build_driver:build_nic_on_centos6.7 [2023/06/25 09:48] (目前版本)
行 1: 行 1:
 {{tag>​ixgvevf implicit_declaration gcc}} {{tag>​ixgvevf implicit_declaration gcc}}
 ====== Build ixgvevf kernel module on CentOS6.7 ====== ====== Build ixgvevf kernel module on CentOS6.7 ======
-===== 準備 ​===== +===== 確認環境 ​===== 
- +執行uname -a確認kernel版本,CentOS6.7如下:​ 
- +<​code ​bash
-<​code>​ +2.6.32-573.el6.x86_64
-http://​vault.centos.org/​centos/​6.7/​centosplus/​x86_64/Packages/+
 </​code>​ </​code>​
 +===== 安裝kernel-headers與kernel-devel ===== 
 +下載kernel-headers與kernel-devel rpm:​(從此[[http://​vault.centos.org/​centos/​6.7/​centosplus/​x86_64/​Packages/​|link]]找尋)
 <code bash> <code bash>
-yum install rpm-build gcc cpp kernel-headers ​kernel-devel+kernel-devel-2.6.32-573.el6.centos.x86_64.rpm 
 +kernel-headers-2.6.32-573.el6.centos.x86_64.rpm
 </​code>​ </​code>​
 +在build system安裝這兩個rpm:​
 +<code bash>
 +rpm -ivh kernel-devel-2.6.32-573.el6.centos.x86_64.rpm
 +rpm -ivh kernel-headers-2.6.32-573.el6.centos.x86_64.rpm
 +</​code>​
 +安裝之後,要執行以下指令讓make能夠找到header code:
 +<code bash>
 +ln -s /​usr/​src/​kernels/​2.6.32-573.el6.centos.x86_64 /​usr/​src/​linux
 +</​code>​
 +===== 安裝gcc/​rpm-build/​make =====
 +gcc與make為編譯用,rpm-build為產生kernel module rpm檔用;假如你要在其他機器透過rpm安裝此driver,可build rpm出來使用:​
 +<code bash>
 +yum install rpm-build gcc make
 +</​code>​
 +===== 下載對應驅動 =====
 +到Intel Download Center搜尋你要的驅動程式並下載:​ [[https://​downloadcenter.intel.com/​download/​18700/​Network-Adapter-Virtual-Function-Driver-for-10-Gigabit-Network-Connections|link]]。我所下載版本為3.1.2,檔案名稱為ixgbevf-3.1.2.tar.gz。
 +===== 編譯與打包 =====
 +==== 編譯 ====
 +<code bash>
 +tar zxvf ixgbevf-3.1.2.tar.gz
 +cd ixgbevf-3.1.2/​src
 +make
 +</​code>​
 +如果沒意外,會產生ixgbevf.ko;可以透過insmod ixgbevf.ko載入它。
 +==== 打包 ====
 +這是從driver包內README看到的方法:​
 +<code bash>
 +rpmbuild -tb ixgbevf-3.1.2.tar.gz
 +</​code>​
 +在執行完指令且沒問題後,可以在以下位置找到你的東西:​
 +<code bash>
 +/​root/​rpmbuild/​RPMS/​x84_64/​ixgbevf-3.1.2-1.x86_64.rpm
 +</​code>​
 +如果安裝的系統與build出來的版本不合,是會有WARNING的。
 +===== 其它 =====
 +一開始由於我是直接透過yum安裝kernel-headers與kernel-devel套件,在make過程中,一直出現implicit declaration error。起初懷疑和gcc版本有關,最後發現是由於yum安裝了更新版本的kernel-headers與kernel-devel。
 +===== Reference =====
 +  * [[http://​jylin76.blogspot.tw/​2011/​02/​cent-osintel-82566dm-2.html|Kernel header files not in any of the expected locations]]
  
- +=====    ===== 
 +---- 
 +\\ 
 +~~DISQUS~~