我的autoconf设置相当新:
m4 (GNU M4) 1.4.17 and came with ubuntu
autoconf (GNU Autoconf) 2.69
我的configure.ac相当简单:
30 ACX_PTHREAD([
31 AC_DEFINE([HAVE_PTHREAD], [1], [Define if you have POSIX threads libraries and headers])
32 gtest_LIBS="$PTHREAD_LIBS $LIBS"
33 gtest_CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
34 gtest_CXXFLAGS="$CXXFLAGS $PTHREAD_CXXFLAGS"
35 gtest_CC="$PTHREAD_CC"
36 gtest_CXX="$PTHREAD_CXX"])
运行autconf给了我错误:
autoreconf -fi
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:31: error: possibly undefined macro: AC_DEFINE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
我相信我的acx_pthread宏给我带来麻烦。我研究了这个宏的定义,但没有发现任何奇怪的东西。有人建议,这是由于其他情况下缺少的pkg.m4引起的。我验证了最新版本的PKG-Config已在我的系统上安装。我的系统中存在pkg.m4:/usr/share/aclocal。我一直在研究解决这个问题的解决方案,无法到达任何地方。
我的问题原来是由于缺乏axc_pthread.m4文件所致。这就是我发现它的方式:
autoreconf -fi给出了错误消息。如果我运行autoreconf -i,则该程序将无需任何错误消息而无声地运行。运行./configure将在逐字复制到配置文件的行中揭示问题。这表明我的系统中未定义acx_pthread宏。
下载链接是:http://ac-archive.sourceforge.net/ac-archive/acx_pthread.html。经过一些研究,似乎有很多资料提供了这种宏观定义。不知道哪一个更好。但是我渴望解决这个问题。将此文件交给我项目的M4目录后,我的问题得到解决。希望这可以帮助他人。AutoConf的问题是通常一个问题出现错误的症状。