若 ./configure 报“command not found”,先检查是否存在 configure 脚本(ls -F | grep configure),若无则需用 autoreconf -fiv 生成;确认已安装 autoconf、automake、libtool;注意项目可能使用 meson 或 cargo,应优先查阅 README.md。
configure 没找到怎么办
很多源码包解压后直接
报错“command not found”,不是你漏装了软件,而是这个脚本根本不存在——它得先生成。Autotools 项目(比如老版本的 nginx、httpd)通常只带
和
,需要本地运行
生成
脚本。
常见错误现象:
;
;
(其实是 bash 把
当成命令执行了)。
先确认是否真有
:运行
,看到
才说明已自带
没有的话,检查是否装了
、
、
(Ubuntu/Debian:
;CentOS/RHEL:
)
有些项目用
或
,别硬套
——看
里写的构建方式,不是所有源码都走 Autotools
make install 覆盖系统文件的风险
默认把二进制、头文件、配置模板全塞进
,看起来安全,但一旦你之前用包管理器(apt/dnf)装过同名软件,就可能引发冲突:比如
覆盖了系统
的符号链接,导致
失败或桌面环境启动异常。
使用场景:你想试用新版本 Redis,但又不敢动系统已有的
;或者编译一个自定义打补丁的 Nginx,只想让它在测试环境跑。
永远优先加
:比如
,然后把
加进
不要用
往
或
写,除非你清楚每个安装路径的作用,且愿意手动维护
想卸载?
大概率不存在——Autotools 默认不提供,得靠你记下
输出的每行路径,或提前用
打包成 deb/rpm
找不到依赖头文件或库(fatal error: xxx.h: No such file or directory)
这问题不是编译器坏了,是开发头文件没装。Linux 发行版把运行时库(如
)和开发头文件(如
)拆成两个包:用户装
,开发者得额外装
(Debian/Ubuntu)或
(RHEL/CentOS/Fedora)。
参数差异:
查不到,
手动指定路径又容易漏,不如让
自己发现。
先运行
,看有没有禁用某模块的开关(比如
),临时跳过报错依赖
查缺的头文件属于哪个包:
(需先
);RHEL 系用
某些库路径不在默认搜索范围(比如自己编译装到
),就得显式告诉 configure:
make -j 多线程编译崩了怎么办
看起来快,但不少旧项目 Makefile 没写好依赖顺序,一并行就出错,典型表现是
或
(明明刚生成的 .o 文件还没来得及链接)。
性能影响:现代 CPU 上
通常比
快 2–3 倍;但若频繁失败重试,反而更慢。
首次编译一律用
,确保流程通得过
确认没问题后再试
;如果崩了,别改 Makefile,先
再重来
有些项目支持
(继续执行后续目标),但对依赖断裂无效,不如老实用单线程
最麻烦的从来不是命令敲不对,而是你以为 configure 成功了,其实它悄悄跳过了某个关键模块(比如提示
却继续往下走),结果 make 出来的程序一运行就 core dump。盯紧 configure 的每一行输出,别只看最后的 “yes”。
./configureconfigure.acMakefile.amautoreconf -fivconfigure./configure: No such file or directoryautogen.sh not foundconfigure.ac: command not found./configure.acconfigurels -F | grep configureconfigure*autoconfautomakelibtoolsudo apt install autoconf automake libtoolsudo dnf install autoconf automake libtoolmesoncargoconfigureREADME.mdsudo make install/usr/local//usr/local/bin/python3/usr/bin/python3apt upgraderedis-server--prefix./configure --prefix=$HOME/local$HOME/local/bin$PATHsudo make install/usr/usr/localmake uninstallmake installcheckinstalllibssl.soopenssl/ssl.hopenssllibssl-devopenssl-develpkg-configgcc -Iconfigure./configure --help | grep -E "(with|enable)"--without-zlibapt-file search ssl.hsudo apt install apt-file && sudo apt-file updatednf provides '*/ssl.h'/opt/openssl./configure --with-openssl=/opt/openssl PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfigmake -j$(nproc)undefined reference to 'xxx'file not found-j4-j1make -j1make -j$(nproc)make cleanmake -kchecking for zlib... no