Gcc 为armhf构建交叉编译器

Gcc 为armhf构建交叉编译器,gcc,compiler-construction,arm,Gcc,Compiler Construction,Arm,我正在尝试为arm构建交叉编译器(target=armlinux-gnueabihf) 从GCC4.6源代码,带有选项-带浮点=硬 我的编译过程在libgcc上失败(无法找到/asm/errno.h文件),我想我使用了错误的sysroot 配置选项: --with float=hard--with mode=thumb--enable libstdcxx debug--enable libstdcxx time=yes--enable interwork--enable multilib--wi

我正在尝试为arm构建交叉编译器(
target=armlinux-gnueabihf
) 从
GCC4.6
源代码,带有选项
-带浮点=硬

我的编译过程在libgcc上失败(
无法找到/asm/errno.h文件
),我想我使用了错误的
sysroot

配置选项:
--with float=hard--with mode=thumb--enable libstdcxx debug--enable libstdcxx time=yes--enable interwork--enable multilib--with gnu as--with gnu ld--enable languages=c,C++禁用禁用LBGOMP-禁用BootStask= NO-Tale= ARMLinux Linux GueAEBIHF——使用SysRoots= $SysRootS-启用NLS——启用CLALALL = GNU启用LIbSTDCXX调试-启用LIbSTDCXX时间=是——启用GNU唯一对象-启用插件-启用ObjcG-启用多功能-禁用SjLJ异常--带arch=armv7-a——带fpu=vfpv3-d16

$sysroot
它是本地sysroot/usr/

主机
=linux-x86\u 64


有人知道如何基于gcc构建arm硬浮点交叉编译器吗?

构建交叉编译器比你想象的要复杂。有一个循环依赖关系,没有GLIBC就无法构建GCC,没有GCC就无法构建GLIBC。解决方案包括构建编译器三次,构建GLIBC两次,每次都启用越来越多的功能,这很难解释

如果您有一个现有的sysroot,那么事情就容易多了。循环已经中断,因此它应该可以正常工作,假设sysroot包含头文件和二进制文件

但这并不容易:随着时间的推移,情况会发生变化,因此较旧的编译器将难以在较新的sysroot中找到所需的文件(即使它们很可能存在)。您可能会找到4.6时代的较旧的sysroot,但这些sysroot可能会使用“softfp”ABI,因此它们无法与您的HF编译器一起工作


我建议使用类似的工具,这是一种尝试自动化过程的工具,并从源代码构建一个工作的交叉编译器和库。

什么平台?你使用了什么选项?等等,需要更多的信息。另一种选择是,我相信你可以在某个地方得到一个预编译的编译器。@marglisse我已经更新了信息,我需要自己编译。你仍然没有说你的主机系统是什么,$sysroot是什么,你已经在那里放了什么,为什么你需要自己编译等等。(asm/errno.h可能由内核提供)您可以获得安装Debian或Ubuntu sysroot的
qemu\u debootstrap
(确保它安装了
build\u-essential
软件包)。或者你可以从linaro.org下载图片,我想。可能是重复的