【问题标题】:Busybox compilation fails - networking/nslookup.c ErrorBusybox 编译失败 - 网络/nslookup.c 错误
【发布时间】:2014-07-21 15:56:22
【问题描述】:

我正在尝试使用 Buildroot Cross-Compiler 编译 Busybox。

步骤如下:

(交叉编译器的路径正确)

编译返回如下错误:

CC      networking/nslookup.o
networking/nslookup.c: In function ‘server_print’:
networking/nslookup.c:123:37: error: ‘struct <anonymous>’ has no member named ‘nsaddrs’
networking/nslookup.c: In function ‘set_default_dns’:
networking/nslookup.c:163:15: error: ‘struct <anonymous>’ has no member named ‘nsaddrs’
make[1]: *** [networking/nslookup.o] Error 1
make: *** [networking] Error 2

如果我不使用交叉编译器,一切都会很好。

你有什么建议吗?

【问题讨论】:

  • 只有这些错误吗?通常,学习对代码库进行递归搜索(使用 -r 标志到 grep 或在 IDE 中),找出这些标识符的位置以及导致它们丢失的原因。您还应该对消息的关键部分进行网络搜索,以查看使用该包的其他人是否遇到并理解它。你能得到一个已经从某个地方移植到 pi 的busybox版本吗?
  • 我不知道在这种情况下如何使用 grep -r 。是的,我有一个以前工作的工作 linux 版本
  • 我使用了 Buildroot,它使用了 busybox,来填充文件系统。导致错误的原因仍然是个谜。
  • 在我通过网络搜索找到的随机版本的 nslookup.c 中,此代码仅在定义了 ENABLE_FEATURE_IPV6 时才起作用。当您构建的库/包含不支持它时,可能会启用它。你想要吗?你需要它吗?您是否自动配置此项目或类似项目?如果是这样,请注意检测 构建系统 的配置然后尝试将结果应用到可能仍然是 linux,但 不同 一个。

标签: c++ linux-kernel embedded-linux busybox buildroot


【解决方案1】:

之前

制作菜单配置

您应该首先根据使用的板的类型创建交叉编译busybox的默认配置

ma​​ke defconfig
make vexpress_defconfig //如果你使用的板子和vexpress类似

还有一个重要的参数是架构名称,如果您正在为 ARM 构建busybox,那么您应该将其作为参数与 make 一起传递

制作 ARCH=arm CROSS_COMPILE=

有关交叉编译的更多详细信息,您还可以参考
http://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BusyBox_for_ARM

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 2017-02-02
    • 2020-04-09
    • 2017-12-27
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2016-05-24
    • 2015-09-13
    相关资源
    最近更新 更多