asm/socket.h:没有这个文件或目录,交叉编译Dart用于树莓派

10

我正在按照这里的指示,对Dart运行时进行交叉编译。

我已经按照规定安装了所有依赖项。我还使用必要的工具链克隆了git库。

我正在使用以下命令运行运行时编译:

./tools/build.py -m release -a arm --toolchain=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf runtime

编译开始没有问题,但是停止并显示以下错误信息:
  LINK(target) out/ReleaseXARM/libdart_dependency_helper.target
  CXX(host) out/ReleaseXARM/obj.host/libdart_lib_withcore/runtime/vm/bootstrap.o
In file included from /usr/include/sys/socket.h:38:0,
                 from /usr/include/netinet/in.h:23,
                 from /usr/include/arpa/inet.h:22,
                 from runtime/platform/globals.h:56,
                 from runtime/platform/assert.h:16,
                 from runtime/vm/allocation.h:8,
                 from runtime/vm/bootstrap.h:9,
                 from runtime/vm/bootstrap.cc:5:
/usr/include/bits/socket.h:345:24: fatal error: asm/socket.h: No such file or directory
 #include <asm/socket.h>
                        ^
compilation terminated.
  CXX(host) out/ReleaseXARM/obj.host/libdart_lib_withcore/gen/async_gen.o
In file included from /usr/include/sys/socket.h:38:0,
                 from /usr/include/netinet/in.h:23,
                 from /usr/include/arpa/inet.h:22,
                 from runtime/platform/globals.h:56,
                 from runtime/platform/assert.h:16,
                 from runtime/vm/allocation.h:8,
                 from runtime/vm/bootstrap.h:9,
                 from out/ReleaseXARM/obj/gen/async_gen.cc:5:
/usr/include/bits/socket.h:345:24: fatal error: asm/socket.h: No such file or directory
 #include <asm/socket.h>
                        ^
compilation terminated.
runtime/libdart_lib_withcore.host.mk:978: recipe for target 'out/ReleaseXARM/obj.host/libdart_lib_withcore/runtime/vm/bootstrap.o' failed
make: *** [out/ReleaseXARM/obj.host/libdart_lib_withcore/runtime/vm/bootstrap.o] Error 1
make: *** Waiting for unfinished jobs....
runtime/libdart_lib_withcore.host.mk:986: recipe for target 'out/ReleaseXARM/obj.host/libdart_lib_withcore/gen/async_gen.o' failed
make: *** [out/ReleaseXARM/obj.host/libdart_lib_withcore/gen/async_gen.o] Error 1
BUILD FAILED

我是否漏掉了任何依赖包?

你试过这个吗?https://lists.debian.org/debian-user/2014/01/msg00111.html - Fox32
是的,但apt会尝试删除其他软件包:将删除以下软件包: g++-4.9-arm-linux-gnueabihf g++-4.9-multilib-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc-4.9-arm-linux-gnueabihf gcc-4.9-multilib-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gobjc++-4.9-arm-linux-gnueabihf gobjc++-4.9-multilib-arm-linux-gnueabihf gobjc-4.9-arm-linux-gnueabihf gobjc-4.9-multilib-arm-linux-gnueabihf - Fedy2
我想知道你使用gcc 4.9而不是提到的4.6是否有问题。也许中间发生了一些变化?您还可以尝试在dart:misc邮件列表上进行询问。 - Fox32
依赖项已通过建议的脚本安装。我将尝试降级到4.6,并在邮件列表中提问。谢谢。 - Fedy2
3个回答

8

我遇到了同样的问题。在我的Ubuntu 14.04系统上,/usr/include/asm不存在。相反,它被称为asm-generic。我创建了符号链接,然后构建就能够继续进行。

cd /usr/include
sudo ln -s asm-generic/ asm

构建在那之后能够继续进行。

6

可能是因为您尝试构建应用程序时没有正确设置一些包含路径,例如在64位平台上使用32位gcc。

解决方法:

sudo apt-get install gcc-multilib


2

我不确定为什么会发生这种情况,但有时候/usr/include/asm会被删除。我的一些队友在他们的Ubuntu x86-64工作站上发现这个asm符号链接是:

0 lrwxrwxrwx 1 root root 20 May 22  2013 /usr/include/asm -> x86_64-linux-gnu/asm

重建它的命令是:

$ cd /usr/include
$ sudo ln -s x86_64-linux-gnu/asm asm
< p >在 < code >/usr/include/asm-generic 目录中的文件有时与 x86-64 特定目录中的文件等效,但并非总是如此,因此很难建议将其作为解决方法进行符号链接。< /p >

在我的Ubuntu版本中,gcc-multilib会与gcc-arm-linux-gnueabi发生冲突。 - SDJSK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接