Ubuntu 12.04 исправила b43 ошибку компиляции драйвера

Я попробовал это, Как я устанавливаю, это исправило b43 драйвер? ведите к исправленному b43 драйверу установки на Ubuntu 12.04 с 3.2.0-31-универсальным ядром, но я не могу передать фазу компиляции. Вот то, что я сделал:

wget CD http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.1/compat-wireless-3.1.1-1.tar.bz2 compat-wireless-3.1.1-1/

scripts/driver-select b43

сделать

make -C /lib/modules/3.2.0-31-generic/build M=/home/marco/compat-wireless-3.1.1-1 modules
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-31-generic'
  CC [M]  /home/marco/compat-wireless-3.1.1-1/compat/main.o
In file included from /home/marco/compat-wireless-3.1.1-1/include/linux/compat-2.6.29.h:5:0,
                 from /home/marco/compat-wireless-3.1.1-1/include/linux/compat-2.6.h:24,
                 from <command-line>:0:
include/linux/netdevice.h:1153:5: warning: "IS_ENABLED" is not defined [-Wundef]
include/linux/netdevice.h:1153:15: error: missing binary operator before token "("
include/linux/netdevice.h: In function ‘netdev_uses_dsa_tags’:
include/linux/netdevice.h:1421:9: error: ‘struct net_device’ has no member named ‘dsa_ptr’
include/linux/netdevice.h:1422:31: error: ‘struct net_device’ has no member named ‘dsa_ptr’
include/linux/netdevice.h: In function ‘netdev_uses_trailer_tags’:
include/linux/netdevice.h:1431:9: error: ‘struct net_device’ has no member named ‘dsa_ptr’
include/linux/netdevice.h:1432:35: error: ‘struct net_device’ has no member named ‘dsa_ptr’
make[3]: *** [/home/marco/compat-wireless-3.1.1-1/compat/main.o] Error 1
make[2]: *** [/home/marco/compat-wireless-3.1.1-1/compat] Error 2
make[1]: *** [_module_/home/marco/compat-wireless-3.1.1-1] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-31-generic'
make: *** [modules] Error 2

Для фиксации той ошибки, я добавил #include <linux/kconfig.h> к/usr/src/linux-headers-3.2.0-31-generic/include/linux/netdevice.h, но теперь я получаю что-то еще

сделать

make -C /lib/modules/3.2.0-31-generic/build M=/home/marco/compat-wireless-3.1.1-1 modules
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-31-generic'
  CC [M]  /home/marco/compat-wireless-3.1.1-1/compat/main.o
  LD [M]  /home/marco/compat-wireless-3.1.1-1/compat/compat.o
  CC [M]  /home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.o
In file included from /home/marco/compat-wireless-3.1.1-1/include/linux/bcma/bcma.h:9:0,
                 from /home/marco/compat-wireless-3.1.1-1/drivers/bcma/bcma_private.h:8,
                 from /home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:8:
/home/marco/compat-wireless-3.1.1-1/include/linux/ssb/ssb.h: In function ‘ssb_driver_register’:
/home/marco/compat-wireless-3.1.1-1/include/linux/ssb/ssb.h:236:36: error: ‘THIS_MODULE’ undeclared (first use in this function)
/home/marco/compat-wireless-3.1.1-1/include/linux/ssb/ssb.h:236:36: note: each undeclared identifier is reported only once for each function it appears in
In file included from /home/marco/compat-wireless-3.1.1-1/drivers/bcma/bcma_private.h:8:0,
                 from /home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:8:
/home/marco/compat-wireless-3.1.1-1/include/linux/bcma/bcma.h: In function ‘bcma_driver_register’:
/home/marco/compat-wireless-3.1.1-1/include/linux/bcma/bcma.h:170:37: error: ‘THIS_MODULE’ undeclared (first use in this function)
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c: At top level:
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:12:20: error: expected declaration specifiers or ‘...’ before string constant
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:13:16: error: expected declaration specifiers or ‘...’ before string constant
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:182:1: warning: data definition has no type or storage class [enabled by default]
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:182:1: warning: type defaults to ‘int’ in declaration of ‘EXPORT_SYMBOL_GPL’ [-Wimplicit-int]
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:182:1: warning: parameter names (without types) in function declaration [enabled by default]
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:188:1: warning: data definition has no type or storage class [enabled by default]
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:188:1: warning: type defaults to ‘int’ in declaration of ‘EXPORT_SYMBOL_GPL’ [-Wimplicit-int]
/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.c:188:1: warning: parameter names (without types) in function declaration [enabled by default]
make[3]: *** [/home/marco/compat-wireless-3.1.1-1/drivers/bcma/main.o] Error 1
make[2]: *** [/home/marco/compat-wireless-3.1.1-1/drivers/bcma] Error 2
make[1]: *** [_module_/home/marco/compat-wireless-3.1.1-1] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-31-generic'
make: *** [modules] Error 2

Какое-либо предложение, что попробовать затем?

2
задан 13 April 2017 в 15:24

1 ответ

Столкнувшись же вопрос, я должен был изменить много файлов для исправления.

/usr/src/linux-headers-3.2.0-31-generic/include/linux/netdevice.h
bcm4331/compat-wireless-2011-08-27/include/linux/compat-2.6.h
bcm4331/compat-wireless-2011-08-27/drivers/net/wireless/b43/main.c
bcm4331/compat-wireless-2011-08-27/drivers/net/wireless/b43legacy/main.c
bcm4331/compat-wireless-2011-08-27/drivers/net/wireless/b43/pio.c
bcm4331/compat-wireless-2011-08-27/net/mac80211/mlme.c
bcm4331/compat-wireless-2011-08-27/net/mac80211/rate.c
bcm4331/compat-wireless-2011-08-27/net/wireless/core.c
bcm4331/compat-wireless-2011-08-27/net/wireless/util.c
bcm4331/compat-wireless-2011-08-27/net/wireless/reg.c
bcm4331/compat-wireless-2011-08-27/net/wireless/nl80211.c

главным образом добавляя

+#include <linux/module.h>
+#include <linux/export.h>

Когда проблемы вызваны строками, я закомментировал функции в /usr/src/linux-headers-3.2.0-31-generic/include/linux/netdevice.h и других файлах.

//#if IS_ENABLED(CONFIG_NET_DSA)
//      struct dsa_switch_tree  *dsa_ptr;       /* dsa specific data */
//#endif

//#ifdef CONFIG_NET_DSA_TAG_DSA
//      if (dev->dsa_ptr != NULL)
//              return dsa_uses_dsa_tags(dev->dsa_ptr);
//#endif

//#ifdef CONFIG_NET_DSA_TAG_TRAILER
//      if (dev->dsa_ptr != NULL)
//              return dsa_uses_trailer_tags(dev->dsa_ptr);
//#endif

или adding = false в операторе объявления для одной переменной в одном файле.

Я не разработчик C, но PHP, но я просто следую за отладкой make, и тогда он работал с:

sudo ./b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" ../broadcom-wl-5.100.138/linux/wl_apsta
0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: