ARM 交叉编译器找不到包含的标准库

Posted

技术标签:

【中文标题】ARM 交叉编译器找不到包含的标准库【英文标题】:Included standard libraries not found by ARM cross-compiler 【发布时间】:2019-01-28 23:23:25 【问题描述】:

我正在尝试为 ARM a8 处理器进行交叉编译。我正在将代码库移动到新系统,因此应该使用与原始系统相同的编译器和 makefile 来安装它。

我知道我正在使用 arm-linux-gnueabihf-gcc 编译器。

我已经安装了以下软件包:

> sudo apt install gcc-arm-linux-gnueabihf
> sudo apt install binutils-arm-linux-gnueabi

当我编译以下代码块时:

#include <stdio.h>
// filename: simple.c

int main(void)  

  printf("I'm printing!\n");
  return;

使用这个命令:

> arm-linux-gnueabihf-gcc simple.c

我希望它在这一步编译。我反而得到:

In file included from simple.c:1:0: 
/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory
 #include <bits/libc-header-start.h>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

任何帮助将不胜感激!谢谢!

【问题讨论】:

我猜你必须安装libc6 库,比如here。 apt-get install libc6-armel-cross libc6-dev-armel-cross 我添加了那些说明中指定的库。与我的问题中列出的结果相同。 你最后找到解决办法了吗?我也面临同样的问题... 【参考方案1】:

我认为您缺少的是多库数据包,如果我是对的,这应该可以解决您的问题。

sudo apt install gcc-multilib g++-multilib

【讨论】:

以上是关于ARM 交叉编译器找不到包含的标准库的主要内容,如果未能解决你的问题,请参考以下文章

libevent 交叉编译生成的库怎么不能用

交叉编译环境在root用户下找不到arm-linux-gcc问题:

Linux基础(交叉工具链)

linux下 gcc可以编译hello.c arm-linux-gcc 无法找到libz.so.1

autotools,如果找不到交叉编译器,如何失败

为啥 GCC 交叉编译器找不到所有库?