Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Busybox编译失败-网络/nslookup.c错误_C++_Linux Kernel_Embedded Linux_Busybox_Buildroot - Fatal编程技术网

C++ Busybox编译失败-网络/nslookup.c错误

C++ Busybox编译失败-网络/nslookup.c错误,c++,linux-kernel,embedded-linux,busybox,buildroot,C++,Linux Kernel,Embedded Linux,Busybox,Buildroot,我正在尝试使用Buildroot交叉编译器编译Busybox 以下是步骤: 下载Busybox并卸载它 wget&tar xjf busybox-1.22.1.tar.bz2 配置BusyBox并编译 制作菜单配置 使交叉编译=/usr/local/CROSS-rpi/usr/bin/arm-linux- (交叉编译器的路径正确) 编译返回以下错误: CC networking/nslookup.o networking/nslookup.c: In function ‘serve

我正在尝试使用Buildroot交叉编译器编译Busybox

以下是步骤:

  • 下载Busybox并卸载它

    wget&tar xjf busybox-1.22.1.tar.bz2

  • 配置BusyBox并编译

    制作菜单配置

    使交叉编译=/usr/local/CROSS-rpi/usr/bin/arm-linux-

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

编译返回以下错误:

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
CC网络/nslookup.o
networking/nslookup.c:在函数“server\u print”中:
networking/nslookup.c:123:37:错误:“struct”没有名为“nsaddrs”的成员
networking/nslookup.c:在函数“set\u default\u dns”中:
networking/nslookup.c:163:15:错误:“struct”没有名为“nsaddrs”的成员
生成[1]:***[networking/nslookup.o]错误1
make:**[networking]错误2
如果我不使用交叉编译器,一切都会很好

你有什么建议吗?

之前

制作菜单配置

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

制作defconfig
如果您使用的电路板与vexpress类似,则使用vexpress_defconfig//

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

使ARCH=armCROSS\u编译=


有关交叉编译的更多详细信息,您也可以参考

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