configure: errore: il compilatore C non può creare eseguibili

Sto tentando di aggiornare apache 2.2.15 a 2.2.27. Durante lesecuzione di config.nice tratto da apache2.2.15 / build ricevo il seguente errore:

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 

Ho provato a cercare online ma senza fortuna. Ho anche testato il compilatore c eseguendo un piccolo script test.c e funziona bene. Cerano poche soluzioni fornite online come linstallazione del pacchetto “kernel-devel”, ma non risolveva il problema. Come posso farlo funzionare?

Di seguito è riportato il file config.log generato:

 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 

Commenti

Answer

Dalloutput che hai fornito, stai tentando di compilare una build a 32 bit di apache su un sistema a 64 bit. Questo è dallintput da configurare qui:

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

Vedi anche le righe di output che confermano questo:

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 

Qui sta usando un sistema di compilazione a 64 bit ma un host / target a 32 bit. Più in basso vediamo:

ac_cv_env_CFLAGS_set=set ac_cv_env_CFLAGS_value=-m32 

Questo flag dice a gcc di produrre oggetti a 32 bit. Il tuo errore che il compilatore C non può produrre eseguibile è probabilmente causato dalla mancanza di un Toolchain a 32 bit presente.

Testando la tua capacità di comp ile oggetti a 32 bit

Puoi testarlo compilando un piccolo esempio in C con il flag -m32.

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

Compilazione:

gcc -m32 -o m32test m32test.c 

Se questo comando fallisce, allora hai un problema con il tuo compilatore che è in grado di costruire oggetti a 32 bit. I messaggi di errore emessi dal compilatore possono essere utili per rimediare.

Rimedi

  1. Crea per un target a 64 bit (rimuovendo le opzioni di configurazione forzando una build a 32 bit) , o
  2. Installa una toolchain del compilatore a 32 bit

Commenti

  • @Vishal che sembra confermare che non ‘ t avere una configurazione dellambiente di compilazione a 32 bit. Hai bisogno di un apache a 32 bit?
  • Apparentemente sì. Lapache 2.2.15 esistente è stato compilato con il flag m32. Voglio aggiornarlo a 2.2.27 invece di eseguire una nuova installazione 2.2.27. Posso farlo costruendo un target a 64 bit? O dovrei installare toolchain del compilatore a 32 bit per farlo funzionare.
  • Grazie. Linstallazione di glibc-devel.i386 ha risolto il mio problema. Ciao!

Rispondi

CC="" 

Mi dice che nessun compilatore è impostato. Hai gcc installato?

Prova:

which gcc 

Su Debian probabilmente dovrai installare un ambiente di compilazione con:

apt-get install build-essential 

O, ancora meglio:

apt-get build-dep your-package-name 

Commenti

  • ringraziamenti speciali per apt-get install build-essential

Risposta

Ci possono essere molte ragioni per questo. Quello che mi succede più spesso è che cestino le mie CFLAGS sulla riga di comando o impostandone una nel mio ambiente. Mi succede un paio di volte allanno e di solito devo cercarlo su Google perché non ricordo mai la soluzione. “Oh, di nuovo”

Prova a echo $CFLAGS La maggior parte delle volte non dovrebbe “esserci nulla. Se cè, potrebbe essere sbagliato.

In un altro caso ho inviato una riga a uno script di configurazione che funzionava con Linux a 32 bit, ma da allora sono passato a 64 bit e alcune delle cose di -march -mfpu erano sbagliate. Il punto è che “sa messaggio di errore errato, significa che si è verificato un errore durante la compilazione, non che il compilatore non funziona.

Risposta

Ho questo errore quando pensavo di aver installato il compilatore C ma non era effettivamente installato.

Avevo uno script eseguibile per caricare i moduli C che ho eseguito come segue:

./load_modules.sh 

Ma lesecuzione di uno script carica solo i moduli per la durata di quello script. Per fare in modo che lo script mantenga i moduli caricati, devi eseguire:

source load_modules.sh 

che esegue le linee come se “venissero digitate nel terminale.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *