configure: error: компилятор C не может создавать исполняемые файлы


42

Я пытаюсь обновить Apache 2.2.15 до 2.2.27. При запуске config.nice, взятого из apache2.2.15 / build, я получаю следующую ошибку:

checking whether the C compiler works... no
configure: error: in `/home/vkuser/httpd-2.2.27/srclib/apr':
configure: error: C compiler cannot create executables

Я пытался искать в Интернете, но не повезло. Я также проверил компилятор c, запустив небольшой скрипт test.c, и он работает нормально. В интернете было мало решений, таких как установка пакета kernel-devel, но это не помогло решить проблему. Как я могу заставить это работать?

Ниже приведен файл config.log:

    This file contains any messages produced by compilers while
    running configure, to aid debugging if configure makes a mistake.

    It was created by configure, which was
    generated by GNU Autoconf 2.67.  Invocation command line was

      $ ./configure --prefix=/opt/myapp/apache2.2 --with-mpm=worker --enable-static-support --enable-ssl=static --enable-modules=most --disable-authndbd --disable-authn-dbm --disable-dbd --enable-static-logresolve --enable-static-rotatelogs --enable-proxy=static --enable-proxyconnect=static --enable-proxy-ftp=static --enable-proxy-http=static --enable-rewrite=static --enable-so=static --with-ssl=/opt/myapp/apache2.2/openssl --host=x86_32-unknown-linux-gnu host_alias=x86_32-unknown-linux-gnu CFLAGS=-m32 LDFLAGS=-m32 --with-included-apr

    ## --------- ##
    ## Platform. ##
    ## --------- ##

    hostname = dmcpq-000
    uname -m = x86_64
    uname -r = 2.6.18-348.12.1.el5
    uname -s = Linux
    uname -v = #1 SMP Mon Jul 1 17:54:12 EDT 2013

    /usr/bin/uname -p = unknown
    /bin/uname -X     = unknown

    /bin/arch              = x86_64
    /usr/bin/arch -k       = unknown
    /usr/convex/getsysinfo = unknown
    /usr/bin/hostinfo      = unknown
    /bin/machine           = unknown
    /usr/bin/oslevel       = unknown
    /bin/universe          = unknown

    PATH: /opt/myapp/Entrust/GetAccess/Runtime/Apache22/bin
    PATH: /usr/kerberos/sbin
    PATH: /usr/kerberos/bin
    PATH: /usr/local/sbin
    PATH: /usr/local/bin
    PATH: /sbin
    PATH: /bin
    PATH: /usr/sbin
    PATH: /usr/bin
    PATH: /root/bin


    ## ----------- ##
    ## Core tests. ##
    ## ----------- ##

    configure:2793: checking for chosen layout
    configure:2795: result: Apache
    configure:3598: checking for working mkdir -p
    configure:3614: result: yes
    configure:3629: checking build system type
    configure:3643: result: x86_64-unknown-linux-gnu
    configure:3663: checking host system type
    configure:3676: result: x86_32-unknown-linux-gnu
    configure:3696: checking target system type
    configure:3709: result: x86_32-unknown-linux-gnu

    ## ---------------- ##
    ## Cache variables. ##
    ## ---------------- ##

    ac_cv_build=x86_64-unknown-linux-gnu
    ac_cv_env_CC_set=
    ac_cv_env_CC_value=
    ac_cv_env_CFLAGS_set=set
    ac_cv_env_CFLAGS_value=-m32
    ac_cv_env_CPPFLAGS_set=
    ac_cv_env_CPPFLAGS_value=
    ac_cv_env_CPP_set=
    ac_cv_env_CPP_value=
    ac_cv_env_LDFLAGS_set=set
    ac_cv_env_LDFLAGS_value=-m32
    ac_cv_env_LIBS_set=
    ac_cv_env_LIBS_value=
    ac_cv_env_build_alias_set=
    ac_cv_env_build_alias_value=
    ac_cv_env_host_alias_set=set
    ac_cv_env_host_alias_value=x86_32-unknown-linux-gnu
    ac_cv_env_target_alias_set=
    ac_cv_env_target_alias_value=
    ac_cv_host=x86_32-unknown-linux-gnu
    ac_cv_mkdir_p=yes
    ac_cv_target=x86_32-unknown-linux-gnu

    ## ----------------- ##
    ## Output variables. ##
    ## ----------------- ##

    APACHECTL_ULIMIT=''
    APR_BINDIR=''
    APR_CONFIG=''
    APR_INCLUDEDIR=''
    APR_VERSION=''
    APU_BINDIR=''
    APU_CONFIG=''
    APU_INCLUDEDIR=''
    APU_VERSION=''
    AP_BUILD_SRCLIB_DIRS=''
    AP_CLEAN_SRCLIB_DIRS=''
    AP_LIBS=''
    AWK=''
    BUILTIN_LIBS=''
    CC=''
    CFLAGS='-m32'
    CORE_IMPLIB=''
    CORE_IMPLIB_FILE=''
    CPP=''
    CPPFLAGS=''
    CRYPT_LIBS=''
    CXX=''
    CXXFLAGS=''
    DEFS=''
    DSO_MODULES=''
    ECHO_C=''
    ECHO_N='-n'
    ECHO_T=''
    EGREP=''
    EXEEXT=''
    EXTRA_CFLAGS=''
    EXTRA_CPPFLAGS=''
    EXTRA_CXXFLAGS=''
    EXTRA_INCLUDES=''
    EXTRA_LDFLAGS=''
    EXTRA_LIBS=''
    GREP=''
    HTTPD_LDFLAGS=''
    HTTPD_VERSION=''
    INCLUDES=''
    INSTALL=''
    INSTALL_DSO=''
    INSTALL_PROG_FLAGS=''
    LDFLAGS='-m32'
    LIBOBJS=''
    LIBS=''
    LIBTOOL=''
    LN_S=''
    LTCFLAGS=''
    LTFLAGS=''
    LTLIBOBJS=''
    LT_LDFLAGS=''
    LYNX_PATH=''
    MKDEP=''
    MKINSTALLDIRS=''
    MK_IMPLIB=''
    MODULE_CLEANDIRS=''
    MODULE_DIRS=''
    MOD_ACTIONS_LDADD=''
    MOD_ALIAS_LDADD=''
    MOD_ASIS_LDADD=''
    MOD_AUTHNZ_LDAP_LDADD=''
    MOD_AUTHN_ALIAS_LDADD=''
    MOD_AUTHN_ANON_LDADD=''
    MOD_AUTHN_DBD_LDADD=''
    MOD_AUTHN_DBM_LDADD=''
    MOD_AUTHN_DEFAULT_LDADD=''
    MOD_AUTHN_FILE_LDADD=''
    MOD_AUTHZ_DBM_LDADD=''
    MOD_AUTHZ_DEFAULT_LDADD=''
    MOD_AUTHZ_GROUPFILE_LDADD=''
    MOD_AUTHZ_HOST_LDADD=''
    MOD_AUTHZ_OWNER_LDADD=''
    MOD_AUTHZ_USER_LDADD=''
    MOD_AUTH_BASIC_LDADD=''
    MOD_AUTH_DIGEST_LDADD=''
    MOD_AUTOINDEX_LDADD=''
    MOD_BUCKETEER_LDADD=''
    MOD_CACHE_LDADD=''
    MOD_CASE_FILTER_IN_LDADD=''
    MOD_CASE_FILTER_LDADD=''
    MOD_CERN_META_LDADD=''
    MOD_CGID_LDADD=''
    MOD_CGI_LDADD=''
    MOD_CHARSET_LITE_LDADD=''
    MOD_DAV_FS_LDADD=''
    MOD_DAV_LDADD=''
    MOD_DAV_LOCK_LDADD=''
    MOD_DBD_LDADD=''
    MOD_DEFLATE_LDADD=''
    MOD_DIR_LDADD=''
    MOD_DISK_CACHE_LDADD=''
    MOD_DUMPIO_LDADD=''
    MOD_ECHO_LDADD=''
    MOD_ENV_LDADD=''
    MOD_EXAMPLE_LDADD=''
    MOD_EXPIRES_LDADD=''
    MOD_EXT_FILTER_LDADD=''
    MOD_FILE_CACHE_LDADD=''
    MOD_FILTER_LDADD=''
    MOD_HEADERS_LDADD=''
    MOD_HTTP_LDADD=''
    MOD_IDENT_LDADD=''
    MOD_IMAGEMAP_LDADD=''
    MOD_INCLUDE_LDADD=''
    MOD_INFO_LDADD=''
    MOD_ISAPI_LDADD=''
    MOD_LDAP_LDADD=''
    MOD_LOGIO_LDADD=''
    MOD_LOG_CONFIG_LDADD=''
    MOD_LOG_FORENSIC_LDADD=''
    MOD_MEM_CACHE_LDADD=''
    MOD_MIME_LDADD=''
    MOD_MIME_MAGIC_LDADD=''
    MOD_NEGOTIATION_LDADD=''
    MOD_OPTIONAL_FN_EXPORT_LDADD=''
    MOD_OPTIONAL_FN_IMPORT_LDADD=''
    MOD_OPTIONAL_HOOK_EXPORT_LDADD=''
    MOD_OPTIONAL_HOOK_IMPORT_LDADD=''
    MOD_PROXY_AJP_LDADD=''
    MOD_PROXY_BALANCER_LDADD=''
    MOD_PROXY_CONNECT_LDADD=''
    MOD_PROXY_FTP_LDADD=''
    MOD_PROXY_HTTP_LDADD=''
    MOD_PROXY_LDADD=''
    MOD_PROXY_SCGI_LDADD=''
    MOD_REQTIMEOUT_LDADD=''
    MOD_REWRITE_LDADD=''
    MOD_SETENVIF_LDADD=''
    MOD_SO_LDADD=''
    MOD_SPELING_LDADD=''
    MOD_SSL_LDADD=''
    MOD_STATUS_LDADD=''
    MOD_SUBSTITUTE_LDADD=''
    MOD_SUEXEC_LDADD=''
    MOD_UNIQUE_ID_LDADD=''
    MOD_USERDIR_LDADD=''
    MOD_USERTRACK_LDADD=''
    MOD_VERSION_LDADD=''
    MOD_VHOST_ALIAS_LDADD=''
    MPM_LIB=''
    MPM_NAME=''
    MPM_SUBDIR_NAME=''
    NONPORTABLE_SUPPORT=''
    NOTEST_CFLAGS=''
    NOTEST_CPPFLAGS=''
    NOTEST_CXXFLAGS=''
    NOTEST_LDFLAGS=''
    NOTEST_LIBS=''
    OBJEXT=''
    OS=''
    OS_DIR=''
    OS_SPECIFIC_VARS=''
    PACKAGE_BUGREPORT=''
    PACKAGE_NAME=''
    PACKAGE_STRING=''
    PACKAGE_TARNAME=''
    PACKAGE_URL=''
    PACKAGE_VERSION=''
    PATH_SEPARATOR=':'
    PCRE_CONFIG=''
    PICFLAGS=''
    PILDFLAGS=''
    PKGCONFIG=''
    PORT=''
    POST_SHARED_CMDS=''
    PRE_SHARED_CMDS=''
    RANLIB=''
    RM=''
    RSYNC=''
    SHELL='/bin/sh'
    SHLIBPATH_VAR=''
    SHLTCFLAGS=''
    SH_LDFLAGS=''
    SH_LIBS=''
    SH_LIBTOOL=''
    SSLPORT=''
    SSL_LIBS=''
    UTIL_LDFLAGS=''
    ab_LTFLAGS=''
    abs_srcdir=''
    ac_ct_CC=''
    ap_make_delimiter=''
    ap_make_include=''
    bindir='${exec_prefix}/bin'
    build='x86_64-unknown-linux-gnu'
    build_alias=''
    build_cpu='x86_64'
    build_os='linux-gnu'
    build_vendor='unknown'
    cgidir='${datadir}/cgi-bin'
    checkgid_LTFLAGS=''
    datadir='${prefix}'
    datarootdir='${prefix}/share'
    docdir='${datarootdir}/doc/${PACKAGE}'
    dvidir='${docdir}'
    errordir='${datadir}/error'
    exec_prefix='${prefix}'
    exp_bindir='/opt/myapp/apache2.2/bin'
    exp_cgidir='/opt/myapp/apache2.2/cgi-bin'
    exp_datadir='/opt/myapp/apache2.2'
    exp_errordir='/opt/myapp/apache2.2/error'
    exp_exec_prefix='/opt/myapp/apache2.2'
    exp_htdocsdir='/opt/myapp/apache2.2/htdocs'
    exp_iconsdir='/opt/myapp/apache2.2/icons'
    exp_includedir='/opt/myapp/apache2.2/include'
    exp_installbuilddir='/opt/myapp/apache2.2/build'
    exp_libdir='/opt/myapp/apache2.2/lib'
    exp_libexecdir='/opt/myapp/apache2.2/modules'
    exp_localstatedir='/opt/myapp/apache2.2'
    exp_logfiledir='/opt/myapp/apache2.2/logs'
    exp_mandir='/opt/myapp/apache2.2/man'
    exp_manualdir='/opt/myapp/apache2.2/manual'
    exp_proxycachedir='/opt/myapp/apache2.2/proxy'
    exp_runtimedir='/opt/myapp/apache2.2/logs'
    exp_sbindir='/opt/myapp/apache2.2/bin'
    exp_sysconfdir='/opt/myapp/apache2.2/conf'
    host='x86_32-unknown-linux-gnu'
    host_alias='x86_32-unknown-linux-gnu'
    host_cpu='x86_32'
    host_os='linux-gnu'
    host_vendor='unknown'
    htcacheclean_LTFLAGS=''
    htdbm_LTFLAGS=''
    htdigest_LTFLAGS=''
    htdocsdir='${datadir}/htdocs'
    htmldir='${docdir}'
    htpasswd_LTFLAGS=''
    httxt2dbm_LTFLAGS=''
    iconsdir='${datadir}/icons'
    includedir='${prefix}/include'
    infodir='${datarootdir}/info'
    installbuilddir='${datadir}/build'
    libdir='${exec_prefix}/lib'
    libexecdir='${exec_prefix}/modules'
    localedir='${datarootdir}/locale'
    localstatedir='${prefix}'
    logfiledir='${localstatedir}/logs'
    logresolve_LTFLAGS=''
    mandir='${prefix}/man'
    manualdir='${datadir}/manual'
    nonssl_listen_stmt_1=''
    nonssl_listen_stmt_2=''
    oldincludedir='/usr/include'
    other_targets=''
    pdfdir='${docdir}'
    perlbin=''
    prefix='/opt/myapp/apache2.2'
    progname=''
    program_transform_name='s,x,x,'
    proxycachedir='${localstatedir}/proxy'
    psdir='${docdir}'
    rel_bindir='bin'
    rel_cgidir='cgi-bin'
    rel_datadir=''
    rel_errordir='error'
    rel_exec_prefix=''
    rel_htdocsdir='htdocs'
    rel_iconsdir='icons'
    rel_includedir='include'
    rel_installbuilddir='build'
    rel_libdir='lib'
    rel_libexecdir='modules'
    rel_localstatedir=''
    rel_logfiledir='logs'
    rel_mandir='man'
    rel_manualdir='manual'
    rel_proxycachedir='proxy'
    rel_runtimedir='logs'
    rel_sbindir='bin'
    rel_sysconfdir='conf'
    rotatelogs_LTFLAGS=''
    runtimedir='${localstatedir}/logs'
    sbindir='${exec_prefix}/bin'
    shared_build=''
    sharedstatedir='${prefix}/com'
    sysconfdir='${prefix}/conf'
    target='x86_32-unknown-linux-gnu'
    target_alias=''
    target_cpu='x86_32'
    target_os='linux-gnu'
    target_vendor='unknown'

    configure: exit 1

Этот вопрос о Stackoverflow также может помочь: stackoverflow.com/questions/23498237/…
jeremiah

В моем случае это было исправлено путем установки CXX = clang ++ и CC = clang перед запуском ./configure
Phylliida

Ответы:


27

Исходя из результатов, которые вы дали, вы пытаетесь скомпилировать 32-битную сборку apache в 64-битной системе. Это из intput для настройки здесь:

--host=x86_32-unknown-linux-gnu host_alias=x86_32-unknown-linux-gnu CFLAGS=-m32 LDFLAGS=-m32

Также посмотрите выходные строки, подтверждающие это:

configure:3629: checking build system type
configure:3643: result: x86_64-unknown-linux-gnu
configure:3663: checking host system type
configure:3676: result: x86_32-unknown-linux-gnu
configure:3696: checking target system type
configure:3709: result: x86_32-unknown-linux-gnu

Здесь используется 64-битная система сборки, но 32-битный хост / цель. Далее мы видим:

ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value=-m32

Этот флаг говорит gcc создавать 32-битные объекты. Ваша ошибка в том, что компилятор C не может создать исполняемый файл, вероятно, вызвана отсутствием 32-битного набора инструментов.

Проверка вашей способности компилировать 32-битные объекты

Вы можете проверить это, скомпилировав небольшой пример C с -m32флагом.

// Minimal C example
#include <stdio.h>
int main()
{
   printf("This works\n");
   return 0;
}

Компиляция:

gcc -m32 -o m32test m32test.c

Если эта команда не выполняется, значит, у вас проблема с тем, что ваш компилятор может создавать 32-битные объекты. Сообщения об ошибках, генерируемые компилятором, могут помочь исправить это.

средства защиты

  1. Построить для 64-битной цели (удалив параметры конфигурации, принудительно использующие 32-битную сборку), или
  2. Установить 32-битный компилятор

@Vishal, который, кажется, подтверждает, что у вас нет 32-битной настройки среды сборки. Вам нужен 32-битный Apache?
Кейси

Очевидно, да. Существующий apache 2.2.15 был скомпилирован с флагом m32. Я хочу обновить его до 2.2.27 вместо новой установки 2.2.27. Могу ли я сделать это путем построения 64-битной цели? Или я должен установить 32-битный компилятор для работы.
Вишал

Спасибо. Установка glibc-devel.i386 решила мою проблему. Ура!
Вишал

13
CC=''

Говорит мне, что компилятор не установлен. У вас установлен gcc?

Пытаться:

which gcc

В Debian вам, вероятно, нужно установить среду сборки с:

apt-get install build-essential

Или даже лучше:

apt-get build-dep your-package-name

Особая благодарность за apt-get install build-essential
Арам Арабян

2

Там может быть много причин для этого. Что происходит со мной чаще всего, так это то, что я удаляю свои CFLAGS либо из командной строки, либо с помощью одного набора в моей среде. Происходит со мной пару раз в год, и мне обычно приходится гуглить, потому что я никогда не помню, как это исправить. "О, это снова"

Просто попробуйте echo $CFLAGS Большую часть времени там не должно быть ничего. Если есть, то это может быть неправильно.

В другом случае я передал строку скрипту configure, который работал под 32-битным Linux, но с тех пор я перешел на 64-битный, и некоторые из компонентов -march -mfpu теперь были неправильными. Суть в том, что это плохое сообщение об ошибке, это означает, что произошла некоторая ошибка компиляции, а не то, что компилятор не работает.


0

Я получил эту ошибку, когда подумал, что установил компилятор C, но на самом деле он не был установлен.

У меня был исполняемый скрипт для загрузки модулей C, который я выполнил следующим образом:

./load_modules.sh

Но запуск скрипта загружает модули только на время работы скрипта. Чтобы скрипт загружал модули, вы должны запустить:

source load_modules.sh

который выполняет строки, как будто они вводятся в терминал.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.