Yocto Thud版本安装Docker遇cannot find -lgcc_s编译错误求助
解决Yocto Thud编译Docker时
cannot find -lgcc_s错误 问题分析
编译runc-docker时出现链接错误,核心原因是静态编译模式下缺少静态版本的libgcc_s库。从日志可见,构建时启用了static_build标签,链接器尝试静态链接所有依赖,但系统未提供libgcc_s.a静态库文件。
解决方案
方案1:添加静态gcc库到系统镜像依赖
在local.conf中追加静态gcc库的安装配置:
IMAGE_INSTALL_append = " libgcc-static"
该配置会将静态版本的libgcc_s库打包到目标镜像,同时在构建阶段让sysroot包含该库,满足runc的静态链接需求。
方案2:修改runc-docker配方,禁用静态编译
如果不需要完全静态编译的runc,可创建runc-docker_%.bbappend文件(放在自定义meta层的recipes-containers/runc-docker/目录下),内容如下:
PACKAGECONFIG_remove = "static"
此操作会关闭runc的静态编译选项,改用动态链接,规避对静态libgcc_s的依赖。
方案3:为runc-docker配方添加静态gcc依赖
仅针对runc-docker的构建过程添加静态gcc库依赖,不影响整个镜像。同样创建runc-docker_%.bbappend:
DEPENDS_append = " libgcc-static"
这样编译runc-docker时,构建系统会自动拉取并部署静态libgcc_s库到sysroot,解决链接器找不到库的问题。
验证操作
修改配置后,清理runc-docker的构建缓存并重新编译:
bitbake -c cleansstate runc-docker bitbake runc-docker
内容的提问来源于stack exchange,提问作者Lambert
相关产品推荐
相关产品推荐

