【问题标题】:Error in cross-compiling a C code--unknown type name '__syscall_slong_t'交叉编译 C 代码时出错 - 未知类型名称“__syscall_slong_t”
【发布时间】:2013-08-21 16:49:14
【问题描述】:

我正在尝试使用 CodeSourcery Arm 编译器交叉编译代码并收到此错误:CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../arm-none-linux-gnueabi/libc/usr/include/time.h:123:5: error: unknown type name '__syscall_slong_t'

您知道如何解决此错误吗? 我使用的是 Ubuntu 12.04 操作系统。

这是我的 Makefile : http://paste.ubuntu.com/6010932/ 这就是我在“make”命令之后所拥有的: http://paste.ubuntu.com/6010923/

【问题讨论】:

  • 也许你需要#define 为有符号长类型。你的工具链没有这个定义。
  • 你是在编译 x64 还是 x32。我认为你需要编译 32 位。
  • 看看这个帖子mailing lists sourceware
  • @Dayalrai 我以前做过同样的事情没有任何问题,但由于某些原因我不得不格式化我的 Ubuntu。现在我已经安装了 CodeSourcery,它不像以前那样工作了。
  • 基本上,您的部分或全部标头与您尝试编译的目标拱门不匹配。

标签: c ubuntu makefile arm cross-compiling


【解决方案1】:

确保将 -m32 添加到您的 CFLAGS 条目。

【讨论】:

  • 这是为 x86 而不是 ARMR 关于不匹配的评论导致了这种混乱。 host PC 的头文件用于编译target 源代码。新编译器有-sysroot;我们没有 CodeSourcery gcc 版本,所以很难给出建议。
  • 这是有道理的。至少是可能的。
  • 好吧,让我知道我需要复制/粘贴什么,以便您能够帮助我。我还没有找到一个明确的解决方案,编译器@artlessnoise 无法识别 -m32
  • @MonaJalal 我认为您应该使用 codesourcery 软件包附带的 Include 文件。根据您的 Makefile,看起来您并没有这样做。您可能正在尝试使用 Ubuntu 的普通 gcc 包含进行构建,这可能是一个错误。
【解决方案2】:

您可能需要修补 typeizes.h 以匹配最近的核心更改,请查看此线程:http://sourceware.org/ml/libc-ports/2012-05/msg00095.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2014-12-12
    相关资源
    最近更新 更多