ARM环境下的交叉编译
我正在使用ARM计算机:ARM环境下的交叉编译,arm,cross-compiling,Arm,Cross Compiling,我正在使用ARM计算机: #include <stdio.h> int main() { printf("Hello world!\n"); return 0; } 这里是/proc/cpuinfo: processor : 0 model name : ARMv7 Processor rev 0 (v7l) BogoMIPS : 413.08 Features : swp half thumb fastmult vfp edsp neon vfpv
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
这里是/proc/cpuinfo
:
processor : 0
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 413.08
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc09
CPU revision : 0
Hardware : ARM-Versatile Express
Revision : 0000
Serial : 0000000000000000
我曾尝试从x86计算机编译此程序:
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
以下是我尝试在ARM计算机上运行时收到的错误消息:
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
语法错误:单词unexpected(应为“)”)
这是文件的输出。/a.out
./a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=0e39c5694c188b0e596666fe6503909394e72f44, not stripped
错误消息很可能来自shell。您是否使用shell脚本来运行编译器?或者
arm linux gnueabi gcc
是一个shell脚本吗?您能否确保正在执行的二进制文件是针对arm的file./a.out
这里是文件的输出:./a.out:ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),静态链接,适用于GNU/Linux 3.2.0,BuildID[sha1]=0520a4e554f2c337d6cf525f6a1835e5dad593de,而不是strippedcat/proc/cpuinfo
命令的输出中包含哪些“功能”行?如果它看起来像这样:功能:半拇指fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
,也就是说它确实包含vfp
功能,您的CPU确实支持硬件浮点,您应该使用arm linux gnueabihf gcc
,不是arm linux gnueabi gcc
。您是如何在目标上启动程序的?错误消息很可能来自shell。您是否使用shell脚本来运行编译器?或者arm linux gnueabi gcc
是一个shell脚本吗?您能否确保正在执行的二进制文件是针对arm的file./a.out
这里是文件的输出:./a.out:ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),静态链接,适用于GNU/Linux 3.2.0,BuildID[sha1]=0520a4e554f2c337d6cf525f6a1835e5dad593de,而不是strippedcat/proc/cpuinfo
命令的输出中包含哪些“功能”行?如果它看起来像这样:功能:半拇指fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
,也就是说它确实包含vfp
功能,您的CPU确实支持硬件浮点,您应该使用arm linux gnueabihf gcc
,不是armlinux-gnueabi-gcc
。您是如何在您的目标上启动该程序的?