在 Linux 中使用 autoconf
生成配置脚本时,可能会遇到各种错误。以下是常见错误的分类处理方法和调试技巧:
autoconf: command not found
或 configure.ac: requires 'AC_PROG_CC'
autoconf
或相关工具链(如 automake
, libtool
)。解决:
# Debian/Ubuntu
sudo apt-get install autoconf automake libtool pkg-config
# RHEL/CentOS
sudo yum install autoconf automake libtool pkgconfig
configure.ac
configure.ac:12: error: possibly undefined macro: AC_PROG_LIBTOOL
m4
文件或未调用 AC_INIT
)。AC_INIT
和 AM_INIT_AUTOMAKE
。LT_INIT
),需复制 .m4
文件到 m4/
目录,并在 configure.ac
中添加:m4
AC_CONFIG_MACRO_DIRS([m4])
automake-1.15 is needed but automake-1.14 found
bash
sudo apt-get install autoconf automake=1.15*
autoreconf
强制更新:bash
autoreconf --force --install
config.sub: not found
或 missing 'install-sh'
automake --add-missing
生成缺失文件。bash
autoreconf -fvi
autoconf -v # 显示详细处理过程
autoreconf -v -i # 递归处理并显示日志
config.log
./configure
失败后,查看 config.log
末尾的 错误详情。aclocal # 生成 aclocal.m4
autoconf # 生成 configure 脚本
automake --add-missing # 生成 Makefile.in
./configure # 测试配置
m4/
目录是否存在,并确保宏文件权限正确:bash
mkdir m4
cp /path/to/custom.m4 m4/
aclocal -I m4
configure.ac
中明确指定工具链:m4
AC_CANONICAL_HOST
AC_PROG_CC
AC_PROG_CXX
bash
make distclean
git clean -xdf # 慎用!会删除所有未跟踪文件
autoreconf -fvi
undefined macro AC_MSG_ERROR
configure.ac
中拼写错误或缺少 AC_INIT
。m4
AC_INIT([myapp], [1.0])
AC_CONFIG_SRCDIR([src/main.c])
libtool library used but 'LT_INIT' not called
m4
LT_INIT
AC_PROG_LIBTOOL # 旧版本
bash
autoconf --trace 'AC_DEFINE:$1'
bash
diff -u configure.ac.old configure.ac > fix.patch
通过以上方法,可以系统性地定位和解决 autoconf
相关问题。遇到复杂问题时,建议结合 strace
或检查 autom4te.cache
中的临时文件进一步分析。