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