Проблема Autoconf: «ошибка: компилятор C не может создать исполняемые файлы» - PullRequest
2 голосов
/ 22 сентября 2009

Я пытаюсь собрать программу, написанную на C, с помощью автоинструментов GNU, но, очевидно, она неправильно настроена, потому что при запуске 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 ]

3 голосов
/ 22 сентября 2009

Проблема в том, что в PACKAGE_TARNAMEPACKAGE) есть новая строка, которая установлена ​​в файле 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 голосов
/ 22 сентября 2009

Похоже, проблема в символе новой строки в "jackoff <a href="http://github.com/enaeseth/jackoff" rel="nofollow noreferrer">http://github.com/enaeseth/jackoff</a>". Проверьте это.

0 голосов
/ 22 сентября 2009

У вас есть дополнительный аргумент для AC_INIT в начале вашего configure.ac. Просто удали его.

0 голосов
/ 22 сентября 2009

PACKAGE_TARNAME выглядит не совсем правильно. Во-первых, в него встроен символ новой строки, который является непосредственной причиной вашей проблемы.

...