如何通过.bbappend层在Yocto中启用Fortran编译支持?
Yocto自定义层启用Fortran支持的正确配置与依赖修复
一、通过.bbappend启用gcc Fortran支持的正确方式
无需修改openembedded-core的原gcc配方,在你的meta-deimos层中创建对应bbappend文件即可实现:
创建对应路径的bbappend文件
在meta-deimos层内新建目录与文件:recipes-devtools/gcc/gcc-13.3.bbappend(若要兼容多版本gcc,改用gcc_%.bbappend)写入Fortran启用配置
将以下内容添加到bbappend文件中:# 开启Fortran语言支持开关 FORTRAN = "1" # 向gcc编译配置中追加Fortran语言支持 EXTRA_OECONF += "--enable-languages=c,c++,fortran" # 声明运行时依赖libgfortran RDEPENDS:${PN}-runtime += "libgfortran" # 若需开发库,添加开发包依赖 RDEPENDS:${PN}-dev += "libgfortran-dev"
二、修复libgfortran依赖不可构建的错误
出现libgfortran无法被提供的问题,核心是依赖链未正确触发构建,按以下步骤修复:
- 确认bbappend路径正确性:确保文件位于
meta-deimos/recipes-devtools/gcc/下,Yocto会自动匹配原gcc配方。 - 显式添加Fortran相关包到镜像:在你的镜像配方或
local.conf中添加:
若是scipy依赖导致的问题,可在scipy的bbappend中添加构建依赖:IMAGE_INSTALL:append = " gfortran libgfortran libgfortran-dev"DEPENDS:append = " gfortran-native libgfortran" - 开启DISTRO_FEATURES中的fortran选项:在
local.conf或层的distro配置文件中添加:DISTRO_FEATURES:append = " fortran" - 清理构建缓存:执行命令清理旧缓存,避免残留配置干扰:
之后重新执行镜像构建命令。bitbake -c cleansstate gcc bitbake -c cleansstate scipy
三、验证配置生效
构建完成后,进入镜像验证:
- 执行
gfortran --version确认编译器正常安装 - 检查
/usr/lib/目录下是否存在libgfortran.so系列文件 - 运行依赖scipy的Python脚本,确认Fortran相关功能可正常运行
内容的提问来源于stack exchange,提问作者artur
相关产品推荐
相关产品推荐

