这个报错意味着系统找不到C编译器,这在源码编译安装软件(比如Nginx、GmSSL等)时很常见。核心原因是系统未安装C编译器(如GCC),或安装了但环境变量未正确配置。
处理这个问题,可以按照下面的步骤来排查和解决:
第一步:安装C编译器(最常见原因)
对于国密服务器,常见系统是CentOS或Ubuntu/Debian,请根据你的系统选择对应命令。
CentOS / RHEL / Fedora 系统:
bash
安装GCC及相关开发工具
sudo yum -y install gcc gcc-c++ autoconf automake make
或者安装开发工具组
sudo yum groupinstall 'Development Tools'
在一些国密Nginx的搭建教程中,也提到了安装 `pcre-devel` 等依赖包。你也可以一并安装:
bash
sudo yum -y install gcc pcre-devel openssl openssl-devel
Ubuntu / Debian 系统:
bash
更新软件包列表
sudo apt update
安装build-essential包组,它包含了gcc、g++、make等
sudo apt install build-essential
第二步:验证安装
安装完成后,运行以下命令检查是否成功。
bash
gcc --version
或
cc --version
如果能看到版本信息,说明编译器已安装成功。
第三步:如果安装后仍报错,检查环境变量
极少数情况下,即使GCC已安装,系统也可能因为`PATH`环境变量问题找不到它。
1. 检查GCC安装路径:
bash
which gcc
通常会输出 `/usr/bin/gcc`。
2. 检查`PATH`变量:
bash
echo $PATH
检查输出中是否包含了GCC所在的目录(如 `/usr/bin`)。如果没有,可以临时添加:
bash
export PATH=$PATH:/usr/bin
如果需要永久生效,可以将这行命令添加到 `~/.bashrc` 文件中。
第四步:检查 `cc` 符号链接
`configure`脚本查找的是`cc`命令,而`cc`通常是指向`gcc`的符号链接。如果`cc`不存在,可以手动创建。
bash
先确认gcc的位置
which gcc
创建符号链接,假设gcc在/usr/bin/gcc
sudo ln -s /usr/bin/gcc /usr/bin/cc
针对国密环境的特别提示
编译GmSSL:如果是从源码编译GmSSL等国密库,除了GCC,可能还需要**CMake、Perl及Git等工具。可提前安装:
bash
CentOS
sudo yum install cmake git perl
Ubuntu
sudo apt install cmake git perl
国密Nginx:在华为云等平台的国密Nginx安装指南中,明确提到此报错可通过安装 `gcc pcre-devel openssl openssl-devel` 解决,可参考。
完成以上步骤后,重新运行之前的 `./configure` 或编译命令,问题应该就能解决了。