configure: błąd: kompilator C nie może utworzyć plików wykonywalnych

Próbuję zaktualizować Apache 2.2.15 do 2.2.27. Podczas uruchamiania config.nice pobranego z apache2.2.15 / build otrzymuję następujący błąd:

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 

Próbowałem wyszukiwać online, ale bez powodzenia. Przetestowałem również kompilator c, uruchamiając mały skrypt test.c i działa dobrze. W Internecie podano kilka rozwiązań, takich jak instalacja pakietu „kernel-devel”, ale nie rozwiązało to problemu. Jak to działa?

Poniżej znajduje się wygenerowany plik 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 

Komentarze

  • Pomocne może też być to pytanie w Stackoverflow: stackoverflow.com/questions/23498237/…
  • W moim przypadku zostało to naprawione przez ustawienie CXX = clang ++ i CC = clang przed uruchomieniem ./configure

Odpowiedź

Na podstawie danych wyjściowych próbujesz skompilować 32-bitową kompilację Apache w systemie 64-bitowym. To jest wejście do skonfigurowania tutaj:

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

Zobacz także linie wyjściowe potwierdzające to:

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 

Tutaj używa 64-bitowego systemu kompilacji, ale 32-bitowego hosta / celu. Dalej widzimy:

ac_cv_env_CFLAGS_set=set ac_cv_env_CFLAGS_value=-m32 

Ta flaga mówi gcc, aby tworzył obiekty 32-bitowe. Twój błąd, że kompilator C nie może wygenerować pliku wykonywalnego, jest prawdopodobnie spowodowany brakiem Obecny 32-bitowy łańcuch narzędzi.

Testowanie twoich umiejętności kompilacji ile obiektów 32-bitowych

Możesz to przetestować, kompilując mały przykład w C z flagą -m32.

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

Kompilowanie:

gcc -m32 -o m32test m32test.c 

Jeśli to polecenie się nie powiedzie, oznacza to, że Twój kompilator jest w stanie zbudować obiekty 32-bitowe. W rozwiązaniu tego problemu mogą być pomocne komunikaty o błędach wysyłane przez kompilator.

Środki zaradcze

  1. Kompiluj dla 64-bitowego celu (usuwając opcje konfiguracji wymuszające kompilację 32-bitową) lub
  2. Zainstaluj 32-bitowy zestaw narzędzi kompilatora

Komentarze

  • @Vishal, który wydaje się potwierdzać, że nie ' nie ma 32-bitowej konfiguracji środowiska kompilacji. Czy potrzebujesz 32-bitowego Apache?
  • Pozornie tak. Istniejący apache 2.2.15 został skompilowany z flagą m32. Chcę go zaktualizować do wersji 2.2.27 zamiast wykonywać nową instalację 2.2.27. Czy mogę to zrobić, budując 64-bitowy cel? Albo powinienem zainstalować pakiet narzędzi kompilatora 32-bitowego, aby działał.
  • Dzięki. Zainstalowanie glibc-devel.i386 rozwiązało mój problem. Pozdrawiam!

Odpowiedz

CC="" 

Mówi mi, że żaden kompilator jest ustawiony. Czy masz zainstalowane gcc?

Spróbuj:

which gcc 

Na Debianie prawdopodobnie będziesz musiał zainstalować środowisko kompilacji zawierające:

apt-get install build-essential 

Lub jeszcze lepiej:

apt-get build-dep your-package-name 

Komentarze

  • specjalne podziękowania za apt-get install build-essential

Odpowiedź

Może być wiele powodów. Najczęściej zdarza mi się to, że kasuję moje CFLAGS w wierszu poleceń lub ustawiając jeden w swoim środowisku. Zdarza mi się kilka razy w roku i zwykle muszę to wygooglować, bo nigdy nie pamiętam poprawki. „Och, to jeszcze raz”

Po prostu spróbuj echo $CFLAGS W większości przypadków nie powinno tam nic być. Jeśli coś jest nie tak.

W innym przypadku podałem wiersz do skryptu konfiguracyjnego, który działał pod 32-bitowym Linuksem, ale od tego czasu przerzuciłem się na 64-bitowy i niektóre rzeczy z -march -mfpu były teraz złe. Chodzi mi o to, że zły komunikat o błędzie, oznacza to, że wystąpił jakiś błąd podczas kompilacji, ale nie to, że kompilator nie działa.

Odpowiedź

Mam ten błąd, kiedy myślałem, że zainstalowałem kompilator C, ale tak naprawdę nie był zainstalowany.

Miałem skrypt wykonywalny do załadowania modułów C, które wykonałem w następujący sposób:

./load_modules.sh 

Ale uruchomienie skryptu ładuje tylko moduły na czas trwania tego skryptu. Aby skrypt utrzymywał załadowane moduły, musisz uruchomić:

source load_modules.sh 

który wykonuje linie tak, jakby były wpisywane do terminala.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *