【发布时间】:2018-03-06 20:06:13
【问题描述】:
在 32 位 Cortex A9 平台的 64 位 Ubuntu 16.04 上交叉编译 helloworld 程序时出现以下错误。
$ make
/usr/local/comp/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mtune=cortex-a9 --sysroot=/usr/local/comp/poky/1.7/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi -Iinclude -Wall -O3 -c -o main.o main.c
In file included from /usr/local/comp/poky/1.7/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/features.h:389:0,
from /usr/local/comp/poky/1.7/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/stdio.h:27,
from main.c:5:
/usr/local/comp/poky/1.7/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory
# include <gnu/stubs-soft.h>
^
compilation terminated.
makefile:45: recipe for target 'main.o' failed
make: *** [main.o] Error 1
然后我检查 stubs.h 文件的内容:
$ cat /usr/local/comp/poky/1.7/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/gnu/stubs.h
/* This file is automatically generated.
This file selects the right generated file of `__stub_FUNCTION' macros
based on the architecture being compiled for. */
#if !defined __ARM_PCS_VFP
# include <gnu/stubs-soft.h>
#endif
#if defined __ARM_PCS_VFP
# include <gnu/stubs-hard.h>
#endif
我应该在makefile 中定义_ARM_PCS_VFP 吗?
【问题讨论】:
-
这是 Yocto 吗?您是否获取了 SDK 提供的环境文件(可能是
/usr/local/comp/poky/1.7/environment-something(使用 tab 补全)? -
感谢史蒂夫,
$ source /usr/local/comp/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi工作。我可以看到该文件中启用了-mfloat-abi=hard。
标签: gcc makefile cross-compiling