Enfrentando o mesmo problema, tive que editar muitos arquivos para corrigir.
/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
adicionando principalmente
+#include <linux/module.h>
+#include <linux/export.h>
Quando o problema provoca as strings, comentei funções em /usr/src/linux-headers-3.2.0-31-generic/include/linux/netdevice.h
e outros arquivos.
//#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
ou adding = false
na declaração para uma variável em um arquivo.
Eu não sou um devedor de C, mas um desenvolvedor PHP, mas simplesmente segui o make debug e ele funcionou com:
sudo ./b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" ../broadcom-wl-5.100.138/linux/wl_apsta