只装libaio不够,因runInstaller链接阶段需libaio.h头文件和符号定义,仅运行时库libaio不含开发文件;RHEL/CentOS 7用yum install libaio-devel,8+用dnf install libaio-devel,麒麟V10同用yum,Ubuntu/Debian用apt install libaio-dev,装后须验证/usr/include/libaio.h存在且权限正确。
直接装 libaio-devel,不是 libaio —— 否则链接阶段必报 fatal error: libaio.h: 没有那个文件或目录。
为什么只装 libaio 不够?
Oracle 19c 安装器(runInstaller)在 linking 阶段会调用 make 编译 RDBMS 二进制,这个过程需要 libaio.h 头文件和 libaio.so 的符号定义。仅安装运行时库 libaio 只提供动态链接能力,不包含开发所需的头文件和静态符号,导致编译中断。
常见错误现象包括:
error in invoking target 'install' of makefile ... ins_rdbms.mkfatal error: libaio.h: 没有那个文件或目录-
undefined reference to 'io_setup'或类似链接失败
不同系统上装什么包?
必须按发行版匹配开发包名称,不能混用:
- RHEL/CentOS 7:执行
yum install -y libaio-devel - RHEL/CentOS 8+ / Oracle Linux 8+:执行
dnf install -y libaio-devel - 银河麒麟 V10(基于 deb 衍生但兼容 yum):仍用
yum install -y libaio-devel,但注意版本需匹配(如libaio-devel-0.3.109-13.el7.x86_64) - Ubuntu/Debian:执行
apt install -y libaio-dev
验证是否装对:rpm -q libaio-devel(RPM 系统)或 dpkg -l | grep libaio-dev(Debian 系统)。装完应能定位到 /usr/include/libaio.h。
装完还报错?检查三个地方
即使 libaio-devel 已安装,仍可能因路径、权限或残留配置失败:
- 头文件不在标准路径?运行
find /usr -name libaio.h 2>/dev/null;若在/usr/local/include,需确认编译环境是否设置了-I/usr/local/include - 用户权限问题:确保
oracle用户对/usr/include/libaio.h有读权限,且ORACLE_HOME所在目录不被noexec挂载选项限制 - 旧版冲突:某些最小化系统预装了过老的
libaio(如 0.3.107),而 19c 要求 ≥0.3.109;用rpm -q --queryformat '%{VERSION}-%{RELEASE}\n' libaio-devel核对,必要时yum downgrade
别把 --ignorePrereq 当万能钥匙
--ignorePrereq 会跳过 libaio-devel 检查,但无法绕过 linking 阶段的头文件缺失——它只影响预检,不影响 make 过程。强行忽略会导致后续报更晦涩的 make: *** [lib] Error 2 或 undefined reference 错误,排查成本反而更高。
真正容易被忽略的是:RAC 多节点环境下,libaio-devel 必须在每个节点都装,且版本一致;否则某节点 linking 成功、另一节点失败,整个集群部署卡在中间状态。


















