在Yocto Scarthgap(stm32mpu157f-dk2)的OpenSTLinux启用libgfortran报错求助
在OpenSTLinux上启用libgfortran的问题及解决办法
问题描述
尝试在OpenSTLinux上启用libgfortran,按照网上资料在local.conf中添加了以下配置:
IMAGE_FEATURES += "tools-sdk" FORTRAN = ",fortran" FORTRAN_forcevariable = ",fortran" RUNTIMETARGET += " libquadmath libgfortran" IMAGE_INSTALL += " gfortran gfortran-symlinks libgfortran libgfortran-dev"
执行bitbake st-image-weston命令时出现错误,翻译后的错误信息如下:
bitbake st-image-weston 注意:已启动PRServer,DB文件:/home/user/Desktop/Testing/Ashish/02_STM32MCU/OpenSTLinux2/build-openstlinuxweston-stm32mp1/cache/prserv.sqlite3,地址:127.0.0.1:44813,进程ID:2068707 加载缓存:100% |##########################################################################################################| 耗时:0:00:01 从依赖缓存中加载4984条记录。 解析配方:100% |########################################################################################################| 耗时:0:00:00 完成3033个.bb文件的解析(3024个已缓存,9个新解析)。4984个目标,635个被跳过,0个被屏蔽,0个错误。 注意:正在解析所有缺失的任务队列依赖 错误:没有任何包提供'libgfortran'(但/home/user/Desktop/Testing/Ashish/02_STM32MCU/OpenSTLinux2/layers/meta-st/meta-st-openstlinux/recipes-st/images/st-image-weston.bb 依赖或需要它) nativesdk-libgfortran 可提供libgfortran,但被跳过:libgfortran需要编译器启用Fortran支持 libgfortran 被跳过:libgfortran需要编译器启用Fortran支持 注意:运行时目标'libgfortran'无法构建,正在移除... 缺失或无法构建的依赖链为:['libgfortran'] 错误:所需构建目标'st-image-weston'没有可构建的提供者。 缺失或无法构建的依赖链为:['st-image-weston', 'libgfortran']
问题原因
错误核心是编译器未启用Fortran支持,原配置中FORTRAN = ",fortran"的写法不符合Yocto构建系统规范,导致编译器未正确开启Fortran编译能力,进而libgfortran包被跳过构建。
解决步骤
修正Fortran启用配置
在local.conf中替换原有的Fortran相关配置为:# 启用交叉编译器的Fortran支持 TARGET_VENDOR = "-fortran" FORTRAN = "fortran" FORTRAN_forcevariable = "fortran"关键补充
TARGET_VENDOR = "-fortran",该配置会告知Yocto构建支持Fortran的交叉编译器,是开启Fortran支持的核心步骤。调整安装包配置
保留工具集和安装包配置,移除冗余的RUNTIMETARGET配置(IMAGE_INSTALL会自动处理依赖):IMAGE_FEATURES += "tools-sdk" IMAGE_INSTALL += "gfortran gfortran-symlinks libgfortran libgfortran-dev"清理缓存并重新构建
执行以下命令清理旧缓存,避免配置冲突:bitbake -c cleanall st-image-weston bitbake st-image-weston
额外检查点
- 确认OpenSTLinux的基础层(如
meta-oe)已正确包含,OpenSTLinux官方镜像通常默认包含,但自定义层环境需验证。 - 若问题仍存在,检查
recipes-devtools/gcc/gcc*.bbappend文件是否存在限制Fortran的配置,如有则移除相关限制项。
内容的提问来源于stack exchange,提问作者ForgottenTale
相关产品推荐
相关产品推荐

