make:*** [package / mac80211 / compile] OpenWRT中的错误1

时间:2015-04-06 13:03:21

标签: build embedded-linux openwrt

我多次编译SDK并且在make V=99时总是得到相同的结果,以下是出现的错误:

build_dir/linux-brcm47xx/compat-wireless-2011-05-27/drivers/net/wireless/b43/main.c:4240:3: error: implicit declaration of function 'ssb_commit_settings'
make[8]: *** [/home/rik/client/openwrt/build_dir/linux-brcm47xx/compat-wireless-2011-05-27/drivers/net/wireless/b43/main.o] Error 1

make[3]: Leaving directory `/home/rik/client/openwrt/package/mac80211'
make[2]: *** [package/mac80211/compile] Error 2
make[2]: Leaving directory `/home/rik/client/openwrt'
make[1]: *** [/home/rik/client/openwrt/staging_dir/target-mipsel_uClibc-0.9.32/stamp/.package_compile] Error 2

1 个答案:

答案 0 :(得分:1)

第一个错误的答案可以在这里找到:Why this "Implicit declaration of function 'X'"?

对于问题的其他部分("我多次编译我的SDK并且当我确定V = 99&#34时总是得到相同的结果;并且使[1] [2] [3]错误)你应该记住,如果在交叉编译包中你得到一个错误,你首先需要(显然)摆脱源代码中的错误(在你的情况下是main.c)而且(重要的! )转到/ home / rik / client / openwrt / dl并删除[name_of_your_package] .tar.gz。由于某种原因,工具链只获取源文件([name_of_your_package] .tar.gz)一次,如果你运行 make package / [name] / compile V = 99 ,即使你改变了它也不会覆盖它你的源代码。即您需要手动删除该文件。你得到了这些错误,因为工具链总是试图编译你编写的第一个源代码,当然结果总是一样。

简单地说,交叉编译步骤如下:

  1. 运行 make menuconfig 并选择所需的包
  2. 运行 make package / [name] / compile
  3. if(!)如果出现编译错误,请从 / home / rik / client / openwrt / dl
  4. 删除 [name_of_your_package] .tar.gz
  5. 更正源代码并从步骤1开始重复。
  6. 也就是说,每次gcc引发错误时,首先需要删除工具链提取的源,然后再尝试编译。