我多次编译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
答案 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 ,即使你改变了它也不会覆盖它你的源代码。即您需要手动删除该文件。你得到了这些错误,因为工具链总是试图编译你编写的第一个源代码,当然结果总是一样。
简单地说,交叉编译步骤如下:
也就是说,每次gcc引发错误时,首先需要删除工具链提取的源,然后再尝试编译。