【问题标题】:Autoconf problem: “error: C compiler cannot create executables”Autoconf 问题:“错误:C 编译器无法创建可执行文件”
【发布时间】:2009-09-23 02:19:57
【问题描述】:

我正在尝试使用 GNU 自动工具构建我用 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 上构建以同样的方式失败,所以这绝对是我的错,而不是环境的错。

【问题讨论】:

    标签: c autotools autoconf configure


    【解决方案1】:

    问题是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)
    

    【讨论】:

      【解决方案2】:

      看起来问题出在“jackoff @987654321@”中的换行符上。检查一下。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          您的configure.ac 开头有一个额外的AC_INIT 参数。只需将其删除。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-24
            • 2012-05-08
            • 1970-01-01
            • 2021-06-16
            • 2021-04-23
            相关资源
            最近更新 更多