configure: error: C compiler cannot create executables

Pokouším se upgradovat apache 2.2.15 na 2.2.27. Při spuštění config.nice převzatého z apache2.2.15 / build dostávám následující chybu:

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 

Snažil jsem se hledat online, ale bez štěstí. Také jsem otestoval kompilátor c spuštěním malého skriptu test.c a běží dobře. Online bylo poskytnuto několik řešení, například instalace balíčku „kernel-devel“, ale problém se tím nevyřešil. Jak mohu zajistit, aby to fungovalo?

Následuje generování souboru 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 

Komentáře

  • Tato otázka týkající se Stackoverflow může také pomoci: stackoverflow.com/questions/23498237/…
  • V mém případě to bylo opraveno nastavením CXX = clang ++ a CC = clang před spuštěním ./configure

Answer

Z výstupu, který jste zadali, se pokoušíte sestavit 32bitové sestavení apache na 64bitovém systému. Toto je z intputu, který zde můžete konfigurovat:

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

Podívejte se také na výstupní řádky, které to potvrzují:

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 

Zde se používá 64bitový systém sestavení, ale 32bitový hostitel / cíl. Dále vidíme:

ac_cv_env_CFLAGS_set=set ac_cv_env_CFLAGS_value=-m32 

Tento příznak říká gcc, aby produkoval 32 bitové objekty. Vaše chyba, že kompilátor C nemůže vytvořit spustitelný soubor, je pravděpodobně způsobena tím, že nemá Je k dispozici 32bitový řetězec nástrojů.

Testování vaší schopnosti kompilovat ile 32bitové objekty

Můžete to otestovat kompilací malého příkladu C s příznakem -m32.

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

Kompilace:

gcc -m32 -o m32test m32test.c 

Pokud tento příkaz selže, máte problém s tím, že váš kompilátor dokáže sestavit 32bitové objekty. Chybové zprávy vydávané kompilátorem mohou být užitečné k nápravě tohoto problému.

Náprava

  1. Vytvoření pro 64bitový cíl (odstraněním možností konfigurace vynucujících 32bitové sestavení) , nebo
  2. Nainstalujte 32bitový řetězec nástrojů kompilátoru

Komentáře

  • @Vishal, který vás zřejmě potvrzuje ‚ nemáte 32bitové nastavení prostředí pro sestavení. Potřebujete 32bitový apache?
  • Zřejmě ano. Stávající apache 2.2.15 byl kompilován s příznakem m32. Chci jej upgradovat na verzi 2.2.27 místo provedení nové instalace 2.2.27. Mohu to udělat vytvořením 64bitového cíle? Nebo bych měl nainstalovat 32bitový překladač nástrojů, aby to fungovalo.
  • Díky. Instalace glibc-devel.i386 můj problém vyřešila. Na zdraví!

Odpověď

CC="" 

Říká mi, že žádný překladač je nastaven. Máte nainstalovaný gcc?

Vyzkoušejte:

which gcc 

Na Debianu budete pravděpodobně muset nainstalovat prostředí sestavení pomocí:

apt-get install build-essential 

Nebo ještě lépe:

apt-get build-dep your-package-name 

Komentáře

  • zvláštní poděkování za apt-get install build-essential

odpověď

Může to mít spoustu důvodů. Stává se mi nejčastěji, že jsem vyhodil CFLAGS buď na příkazový řádek, nebo tak, že jsem jeden nastavil v mém prostředí. Stává se mi několikrát za rok a obvykle to musím vygooglit, protože si nikdy nepamatuji opravu. „Ach, to znovu“

Zkuste to echo $CFLAGS Většinu času by tam nemělo být nic. Pokud ano, může to být špatně.

V jiném případě jsem vložil řádek do konfiguračního skriptu, který fungoval pod 32bitovým Linuxem, ale od té doby jsem přešel na 64bitový a některé věci -march -mfpu byly nyní špatně. Jde o to, že špatná chybová zpráva, znamená to, že došlo k nějaké chybě při kompilaci, ne že kompilátor nefunguje.

Odpověď

Mám tato chyba, když jsem si myslel, že jsem nainstaloval kompilátor C, ale ve skutečnosti nebyl nainstalován.

Měl jsem spustitelný skript pro načtení modulů C, které jsem provedl takto:

./load_modules.sh 

Ale spuštění skriptu načte pouze moduly po dobu trvání tohoto skriptu. Chcete-li, aby skript udržoval načtené moduly, musíte spustit:

source load_modules.sh 

který provádí řádky, jako by byly zadávány do terminálu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *