3

我正在尝试使用 GNU autotools 构建我用 C 语言编写的程序,但我显然设置错误,因为configure运行时,它会吐出:

configure: error: C compiler cannot create executables

如果我查看config.log,我会看到:

configure:2846: checking for C compiler default output file name
configure:2868: gcc    conftest.c  >&5
conftest.c:3:25: warning: missing terminating " character
conftest.c:4: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME "Jackoff"
| #define PACKAGE_TARNAME "jackoff
|       http://github.com/enaeseth/jackoff"
| #define PACKAGE_VERSION "0.1"
| #define PACKAGE_STRING "Jackoff 0.1"
| #define PACKAGE_BUGREPORT "Eric Naeseth <enaeseth@gmail.com>"
| #define PACKAGE "jackoff
|       http://github.com/enaeseth/jackoff"
| #define VERSION "0.1"
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }

出于某种原因,autoconf 正在生成一个无效的测试文件:该行上应该是什么,只是一个分号?在 Ubuntu 9.04 和 Mac OS X 10.6 上构建失败的方式相同,所以这绝对是我的错,而不是环境的错。

4

4 回答 4

3

问题是PACKAGE_TARNAME(和PACKAGE)中有一个换行符,它是在configure.ac文件中设置的。您应该查看其中包含的内容 - 修复它,然后重新生成configure脚本。

我的 configure.ac 脚本之一包含(靠近顶部):

AC_CONFIG_HEADER(config.h)

PACKAGE="sqlcmd"
VERSION="86.04"

AC_MSG_RESULT([Configuring $PACKAGE version $VERSION])

AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
于 2009-09-22T18:18:01.023 回答
2

看起来问题出在“ ”中的换行符中。检查那个。jackoff http://github.com/enaeseth/jackoff

于 2009-09-22T18:17:11.947 回答
0

PACKAGE_TARNAME看起来不太对。一方面,它有一个嵌入式换行符,这是您的问题的直接原因。

于 2009-09-22T18:19:15.980 回答
0

AC_INITconfigure.ac. _ 只需将其删除。

于 2009-09-22T18:19:57.207 回答