You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22.04编译Apache httpd2.2.3 configure/make报错咨询

Apache httpd 2.2.3 编译报错解决方案

问题1:configure阶段提示缺失config.guess、config.sub

  • 报错复现操作与信息
$ git clone -b 2.2.3 --single-branch https://github.com/apache/httpd.git
$ cd httpd
$ autoconf
$ ./configure
configure: error: cannot find required auxiliary files: config.guess config.sub
  • 运行环境
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-conditions/privacy-policy"
UBUNTU_CODENAME=jammy

$ autoconf -V
autoconf (GNU Autoconf) 2.71
  • 原因:Git仓库托管的是开发态源码,未携带正式发行版打包时附带的GNU构建辅助脚本,本地执行高版本autoconf生成配置脚本时不会自动补全这两个文件,最终导致配置检测失败。
  • 解决方法:放弃使用Git拉取的开发分支源码,直接下载对应版本的正式发行源码包,发行包内已预置所有必要的构建脚本,无需手动执行autoconf生成配置文件。

问题2:make阶段提示crypt符号未定义、DSO缺失

  • 报错复现操作与信息
$ wget https://archive.apache.org/dist/httpd/httpd-2.2.3.tar.gz
$ gzip -d httpd-2.2.3.tar.gz
$ tar xvf httpd-2.2.3.tar
$ cd httpd-2.2.3
$ ./configure --prefix /home/ubuntu/local
$ make

/usr/bin/ld: .libs/htpasswd.o: undefined reference to symbol 'crypt@@XCRYPT_2.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libcrypt.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:39: htpasswd] Error 1
make[2]: Leaving directory '/home/ubuntu/httpd-2.2.3/support'
make[1]: *** [/home/ubuntu/httpd-2.2.3/build/rules.mk:72: all-recursive] Error 1
make[1]: Leaving directory '/home/ubuntu/httpd-2.2.3/support'
make: *** [/home/ubuntu/httpd-2.2.3/build/rules.mk:72: all-recursive] Error 1
  • 已安装依赖
sudo apt-get install libapr1-dev libaprutil1-dev
sudo apt-get install build-essential
sudo apt-get install libpcre3-dev
  • 原因:Ubuntu 22.04将原属于glibc的crypt密码加密函数拆分到独立的libcrypt共享库中,httpd 2.2.3发布时间较早,自带构建脚本默认未将-lcrypt加入链接参数,链接htpasswd等工具时找不到对应函数实现就会触发报错。另外configure执行时--prefix参数后缺少等号,属于参数写法不规范,可能引发路径识别异常。
  • 解决步骤:
    1. 先清理之前编译生成的缓存文件,避免旧配置干扰:
    make clean
    
    1. 重新执行configure,显式指定crypt库为链接依赖,同时修正prefix参数写法:

    注意:--prefix参数后必须紧跟等号再写安装路径,否则参数无法被正确识别

    ./configure --prefix=/home/ubuntu/local LDFLAGS="-lcrypt"
    
    1. 重新执行编译即可:
    make
    
    编译完成后执行make install就能将httpd安装到指定的/home/ubuntu/local路径下。

内容的提问来源于stack exchange,提问作者zono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:54:31