安装网络驱动程序时隐式声明函数错误

时间:2016-01-05 17:50:53

标签: linux ubuntu compiler-errors

我正在 Ubuntu桌面 14.04.3 LTS上尝试安装此网卡(全新安装,只是格式化):

Silicom PXG6BPi Six Port Copper Gigabit Ethernet PCI-X Bypass Server Adapter

根据 docs

  
      
  1. 将基本驱动程序tar文件移动到您选择的目录中。例如,使用/ home / username / e1000bp或/ usr / local / src / e1000bp。

  2.   
  3. 解压/解压缩存档:

         

    tar zxf e1000bp-x.x.x.tar.gz

  4.   
  5. 切换到驱动程序src目录:

         

    cd e1000bp-x.x.x / src /

  6.   
  7. 编译驱动程序模块:

         

    make install

  8.   

但是我收到了一些implicit declaration of function错误:

luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo make install make -C /lib/modules/3.16.0-57-generic/build SUBDIRS=/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src modules
make[1]: se ingresa al directorio «/usr/src/linux-headers-3.16.0-57-generic»
  CC [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.o
/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.c: In function ‘e1000_set_ethtool_ops’:
/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.c:1930:5: error: implicit declaration of function ‘SET_ETHTOOL_OPS’ [-Werror=implicit-function-declaration]
     SET_ETHTOOL_OPS(netdev, &e1000_ethtool_ops);
     ^
cc1: some warnings being treated as errors
make[2]: *** [/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.o] Error 1
make[1]: *** [_module_/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src] Error 2
make[1]: se sale del directorio «/usr/src/linux-headers-3.16.0-57-generic»
make: *** [default] Error 2

我认为安装了所有可能需要的东西(linux-genericmakegcc,甚至ethtool)(我的Ubuntu是西班牙语,对不起):< / p>

luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo apt-get install ethtool linux-generic make gcc
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
ethtool ya está en su versión más reciente.
fijado ethtool como instalado manualmente.
gcc ya está en su versión más reciente.
make ya está en su versión más reciente.
fijado make como instalado manualmente.
linux-generic ya está en su versión más reciente.
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
  linux-headers-3.16.0-55 linux-headers-3.16.0-55-generic
  linux-image-3.16.0-55-generic linux-image-extra-3.16.0-55-generic
Use 'apt-get autoremove' to remove them.
0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

这是/src目录列表:

luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ ls -la
total 1352
drwxr-xr-x 3 luis luis   4096 ene  5 15:39 .
drwxr-xr-x 3 luis luis   4096 jul 15  2014 ..
-rwxr--r-- 1 luis luis   5653 dic 22  2008 bp_ioctl.h
-rwxr--r-- 1 luis luis  91521 sep 19  2012 bypass.c
-rwxr--r-- 1 luis luis  14501 dic 19  2011 bypass.h
-rw-r--r-- 1 root root  51576 ene  5 05:38 bypass.o
-rw-r--r-- 1 root root  48684 ene  5 05:38 .bypass.o.cmd
-rwxr--r-- 1 luis luis  62552 jul 15  2014 e1000_ethtool.c
-rwxr--r-- 1 luis luis  11577 jul 15  2014 e1000.h
-rwxr--r-- 1 luis luis 192747 jul 15  2014 e1000_hw.c
-rwxr--r-- 1 luis luis 143287 jul 15  2014 e1000_hw.h
-rw-r--r-- 1 root root 110576 ene  5 05:38 e1000_hw.o
-rw-r--r-- 1 root root  48706 ene  5 05:38 .e1000_hw.o.cmd
-rwxr--r-- 1 luis luis 153304 jul 15  2014 e1000_main.c
-rw-r--r-- 1 root root  81472 ene  5 05:38 e1000_main.o
-rw-r--r-- 1 root root  49206 ene  5 05:38 .e1000_main.o.cmd
-rwxr--r-- 1 luis luis   3967 sep 19  2012 e1000_osdep.h
-rwxr--r-- 1 luis luis  22838 jul 15  2014 e1000_param.c
-rw-r--r-- 1 root root  27840 ene  5 05:38 e1000_param.o
-rw-r--r-- 1 root root  48739 ene  5 05:38 .e1000_param.o.cmd
-rwxr--r-- 1 luis luis  59214 jul 15  2014 e1000_proc.c
-rw-r--r-- 1 root root  51128 ene  5 05:38 e1000_proc.o
-rw-r--r-- 1 root root  48771 ene  5 05:38 .e1000_proc.o.cmd
-rwxr--r-- 1 luis luis  11317 jul 15  2014 Makefile
drwxr-xr-x 2 root root   4096 ene  5 05:38 .tmp_versions

这是我的Ubuntu桌面版:

luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty

一个重要细节:在 Ubuntu服务器 v14.04.1 LTS(同一台计算机,在另一个分区上)上,相同的程序工作完美:

luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo make install
make -C /lib/modules/3.13.0-32-generic/build SUBDIRS=/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src modules
make[1]: se ingresa al directorio «/usr/src/linux-headers-3.13.0-32-generic»
  CC [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_main.o
  CC [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_param.o
  CC [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_hw.o
  CC [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_proc.o
  CC [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/bypass.o
  CC [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.o
  LD [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000bp.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000bp.mod.o
  LD [M]  /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000bp.ko
make[1]: se sale del directorio «/usr/src/linux-headers-3.13.0-32-generic»
gzip -c ../e1000bp.7 > e1000bp.7.gz
# remove all old versions of the driver
find /lib/modules/3.13.0-32-generic -name e1000bp.ko -exec rm -f {} \; || true
find /lib/modules/3.13.0-32-generic -name e1000bp.ko.gz -exec rm -f {} \; || true
install -D -m 644 e1000bp.ko /lib/modules/3.13.0-32-generic/kernel/drivers/net/ethernet/intel/e1000bp/e1000bp.ko
/sbin/depmod -a || true
install -D -m 644 e1000bp.7.gz /usr/share/man/man7/e1000bp.7.gz
man -c -P'cat > /dev/null' e1000bp || true
e1000bp.
luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ 

在这种情况下,它太全新安装,但不是最新版本(仅安装了makegcc,因为ethtool已包含在内):

luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

编译后这是/src目录:

luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ ls -la
total 2216
drwxr-xr-x 3 luis luis   4096 ene  5 18:26 .
drwxr-xr-x 3 luis luis   4096 jul 15  2014 ..
-rwxr--r-- 1 luis luis   5653 dic 22  2008 bp_ioctl.h
-rwxr--r-- 1 luis luis  91521 sep 19  2012 bypass.c
-rwxr--r-- 1 luis luis  14501 dic 19  2011 bypass.h
-rw-r--r-- 1 root root  52088 ene  5 18:26 bypass.o
-rw-r--r-- 1 root root  55509 ene  5 18:26 .bypass.o.cmd
-rw-r--r-- 1 root root   4942 ene  5 18:26 e1000bp.7.gz
-rw-r--r-- 1 root root 343160 ene  5 18:26 e1000bp.ko
-rw-r--r-- 1 root root    394 ene  5 18:26 .e1000bp.ko.cmd
-rw-r--r-- 1 root root   9288 ene  5 18:26 e1000bp.mod.c
-rw-r--r-- 1 root root  12912 ene  5 18:26 e1000bp.mod.o
-rw-r--r-- 1 root root  29999 ene  5 18:26 .e1000bp.mod.o.cmd
-rw-r--r-- 1 root root 331102 ene  5 18:26 e1000bp.o
-rw-r--r-- 1 root root    601 ene  5 18:26 .e1000bp.o.cmd
-rwxr--r-- 1 luis luis  62552 jul 15  2014 e1000_ethtool.c
-rw-r--r-- 1 root root  31432 ene  5 18:26 e1000_ethtool.o
-rw-r--r-- 1 root root  55586 ene  5 18:26 .e1000_ethtool.o.cmd
-rwxr--r-- 1 luis luis  11577 jul 15  2014 e1000.h
-rwxr--r-- 1 luis luis 192747 jul 15  2014 e1000_hw.c
-rwxr--r-- 1 luis luis 143287 jul 15  2014 e1000_hw.h
-rw-r--r-- 1 root root 110576 ene  5 18:26 e1000_hw.o
-rw-r--r-- 1 root root  55531 ene  5 18:26 .e1000_hw.o.cmd
-rwxr--r-- 1 luis luis 153304 jul 15  2014 e1000_main.c
-rw-r--r-- 1 root root  81776 ene  5 18:26 e1000_main.o
-rw-r--r-- 1 root root  56081 ene  5 18:26 .e1000_main.o.cmd
-rwxr--r-- 1 luis luis   3967 sep 19  2012 e1000_osdep.h
-rwxr--r-- 1 luis luis  22838 jul 15  2014 e1000_param.c
-rw-r--r-- 1 root root  27840 ene  5 18:26 e1000_param.o
-rw-r--r-- 1 root root  55564 ene  5 18:26 .e1000_param.o.cmd
-rwxr--r-- 1 luis luis  59214 jul 15  2014 e1000_proc.c
-rw-r--r-- 1 root root  50464 ene  5 18:26 e1000_proc.o
-rw-r--r-- 1 root root  55596 ene  5 18:26 .e1000_proc.o.cmd
-rwxr--r-- 1 luis luis  11317 jul 15  2014 Makefile
-rw-r--r-- 1 root root     77 ene  5 18:26 modules.order
-rw-r--r-- 1 root root      0 ene  5 18:26 Module.symvers
drwxr-xr-x 2 root root   4096 ene  5 18:26 .tmp_versions

我想我理解这种[error][2]的基础知识,但我不知道如何将它应用于这种特殊情况。

为什么会发生这种情况? 我怎么能解决这个错误并安装/编译驱动程序?
也许只是复制/src目录?文档说:

  

二进制文件将安装为:

 /lib/modules/<KERNEL VERSION>/kernel/drivers/net/e1000bp/e1000bp.[k]o
     

上面列出的安装位置是默认位置。他们   某些Linux发行版可能不正确。

0 个答案:

没有答案