源码编译缺依赖?
麒麟服务器编译源码报头文件或库缺失的原因:-devel 包没装、基础编译工具组没装、目标架构工具链缺,给标准修复命令。
简短答案
“xxx.h: No such file or directory” 九成是缺对应的 -devel 开发包;“gcc: command not found” 是连基础编译工具组都没装。先装工具组,再按报错逐个补 devel 包,最后核对架构。
现象对照表
| 报错 | 缺什么 |
|---|---|
gcc: command not found |
基础编译工具组 |
xxx.h: No such file |
对应的 -devel 包 |
链接阶段报 cannot find -lxxx |
运行库或 -devel 没装全 |
| 个别工具缺失( yacc 类) | 按报错补单个工具包 |
排查步骤
# 一次性装齐基础工具组(组名以实际列表为准)
yum groupinstall "Development Tools"
# 按报错关键字找 devel 包
yum search 关键字
yum install 包名-devel
# 确认本机架构与编译目标一致
uname -m
处理办法
- 缺库:把链接报错里的
-lxxx换成xxx-devel安装; - 依赖多、不想逐个找:有 spec 时用
yum builddeps 包名.spec一把补齐; - 组名因发行版而异,先
yum group list找含 Development 的组再装; - 整环境重建:基线对照 服务器 V11 条目,介质从 银河麒麟镜像列表 取、写盘参考 Rufus 启动盘条目。
操作小结
- 先装 Development Tools 组;
- 按报错逐个补 -devel,别一次下注;
- 架构不一致先换机器或换工具链;
- 全装齐后把报错清一遍再重编,别编到一半才查。