ARM下有一个gcc编译器吗?

时间:2015-05-29 18:59:32

标签: gcc arm

我知道如果我想为ARM设备编译程序,我需要一个特殊版本的gcc,它运行在x86下并编译为ARM(交叉编译)有没有办法在ARM下编译ARM?

4 个答案:

答案 0 :(得分:4)

如果您乐意从源代码编译,可以在ARM设备上本地构建任何最新版本的GCC,以该ARM设备为目标。编译GCC的依赖关系和代码库的大小可能会给你带来一些困难,但我经常在我的Raspberry Pi 2上构建最新的GCC开发分支。

按照:https://gcc.gnu.org/install/中的说明获取所需的先决条件,并在配置编译器时使用以下内容:

  --with-cpu=cortex-a15 --with-float=hard --with-fpu=neon --with-mode=thumb

根据您的系统需要修改--with-cpu--with-fpu选项。

如果您正在寻找预构建的二进制文件,那么在ARM上运行的大多数发行版(当然还有Debian和Ubuntu)将为您提供可以安装的软件包,就像您的x86系统一样。

答案 1 :(得分:1)

考虑下载您选择的编译器的源代码。 Here是一个包含您可以尝试使用的来源的位置。

我可以看到一个在x86盒子上启动的x86交叉编译器,用于为你的本地基于ARM的系统编译ARM版本的编译器。然后,您可以在系统上使用本机版本。

答案 2 :(得分:1)

是的,有交叉编译器,是的,有本机编译器。例如,您可以购买树莓派并安装一个罐装发行版并为您提供本机编译器,或者您可以使用qemu并运行为qemu模拟支持的众多系统之一构建的arm发行版(并运行原生编译器...)或者只是交叉编译。

答案 3 :(得分:0)

Raspberry Pi 2的最新Debian附带gcc 4.6。有关更高级的功能,例如NEON,您可以安装gcc 4.8或更高版本。不同FPU选项的编译命令示例如下:

 gcc 4.6
 gcc  linpack.c cpuidc.c -lm -lrt -O3 -march=armv6 -mfloat-abi=hard -mfpu=vfp -o linpackPiA6
 gcc 4.8
  gcc  linpack.c cpuidc.c -lm -lrt -O3 -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -o linpackPiA7