我设置的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。我一直在研究这个问题的解决方案,无法到达任何地方。
答案 0 :(得分:1)
我的问题原因是缺少axc_pthread.m4文件。这就是我发现它的方式:
autoreconf -fi给出了错误消息。如果我运行autoreconf -i,那么程序将以静默方式运行而不会出现任何错误消息。运行./configure将显示ACX_PTHREAD(...)逐字复制到配置文件的行的问题。这表示我的系统中未定义ACX_PTHREAD宏。
下载链接位于:http://ac-archive.sourceforge.net/ac-archive/acx_pthread.html。经过一些研究,似乎有许多来源提供这种宏观定义。不确定哪一个更好。但我渴望解决这个问题。将此文件复制到我的项目的m4目录后,我的问题得到了解决。希望这可以帮助别人。 autoconf的问题是通常问题显示错误的症状。