gcc 致命错误:gnu/stubs-soft.h:没有这样的文件或目录

tpxzln5u  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(712)

我在64位Ubuntu 16.04上交叉编译helloworld程序时遇到了以下错误,用于32位Cortex A9平台。

$ 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吗?

js4nwp54

js4nwp541#

从你的交叉编译器的名称来看,“cortexa 9 hf-vfp-neon-poky-linux-gnueabi”,它的目标是VFP架构的Cortex-A9,并且启用了neon。添加-mfloat-abi=hard开关应该可以解决这个问题。
来自GCC手册:
-mfloat-abi=name:
指定要使用的浮点ABI。允许的值为:'soft'、'softfp'和'hard'。
指定“soft”将导致GCC生成包含浮点操作的库调用的输出。“softfp”允许使用硬件浮点指令生成代码,但仍使用软浮点调用约定。“hard”允许生成浮点指令并使用特定于FPU的调用约定。
默认值取决于特定的目标配置。注意硬浮动和软浮动ABI是不兼容链路的;你必须用相同的ABI编译你的整个程序,并与一组兼容的库链接。

ldxq2e6h

ldxq2e6h2#

要定义缺少的包,请运行以下命令

sudo apt-file search stubs-soft.h

它显示软件包libc6-dev-armel-cross包含文件stubs-soft.h因此,通过命令安装缺少的软件包

sudo apt-get install libc6-dev-armel-cross

它将为本地计算机提供文件stubs-soft.h

相关问题