Kann CygWin 64-Bit 32-Bit-Quellen kompilieren?

7566
Sopalajo de Arrierez

Ich versuche , auf CygWin 64 Bits zu kompilieren, die (vermutlich angenommenen) 32 Bits, die hier von Thomas Krennwallner erstellt wurden, und die unter Unix und Windows unter CygWin kompiliert werden sollen.

Nach dem Download habe ich:

tar -zxvf wol-0.7.1.tar.gz 

und um das configure.guess-Skript zu aktualisieren (das mitgelieferte ist ein bisschen alt: von 2004), habe ich es hier heruntergeladen .

Entsprechend seiner READMEAkte mache ich:

./configure 

und ich bekomme:

Luis@Windu /cygdrive/h/Temporal/wol/wol-0.7.1 $ ./configure checking build system type... x86_64-unknown-cygwin checking host system type... x86_64-unknown-cygwin checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. 

Das ist meine 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.59. Invocation command line was  $ ./configure   ## --------- ## ## Platform. ## ## --------- ##  hostname = Windu uname -m = x86_64 uname -r = 1.7.33-2(0.280/5/3) uname -s = CYGWIN_NT-6.1 uname -v = 2014-11-13 15:47  /usr/bin/uname -p = unknown /bin/uname -X = unknown  /bin/arch = x86_64 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown  PATH: /usr/local/bin PATH: /usr/bin PATH: /cygdrive/c/Program Files (x86)/AMD APP/bin/x86_64 PATH: /cygdrive/c/Program Files (x86)/AMD APP/bin/x86 PATH: /cygdrive/c/Windows/system32 PATH: /cygdrive/c/Windows PATH: /cygdrive/c/Windows/System32/Wbem PATH: /cygdrive/c/Windows/System32/WindowsPowerShell/v1.0 PATH: /cygdrive/c/ATI Technologies - Graphics/ATI.ACE/Core-Static PATH: /cygdrive/d/Utilidades/UnxUtils PATH: /cygdrive/d/Utilidades/CURL PATH: /cygdrive/d/Utilidades/SSH-Rsync/cwRsync/bin PATH: /cygdrive/d/Utilidades/Copy Path To Clipboard PATH: /cygdrive/d/Programas/HashCat/OCLHashCat PATH: /cygdrive/d/Utilidades/Scripts PATH: /cygdrive/d/Utilidades/SysInternals Suite - PSTools PATH: /cygdrive/d/Utilidades/NirSoft NirCmd PATH: /cygdrive/c/nmap PATH: /cygdrive/c/Bitvise SSH Client PATH: /cygdrive/d/Utilidades/Scripts/Clortho PATH: /cygdrive/c/Nmap   ## ----------- ## ## Core tests. ## ## ----------- ##  configure:1348: checking build system type configure:1366: result: x86_64-unknown-cygwin configure:1374: checking host system type configure:1388: result: x86_64-unknown-cygwin configure:1428: checking for a BSD-compatible install configure:1483: result: /usr/bin/install -c configure:1494: checking whether build environment is sane configure:1537: result: yes configure:1570: checking for gawk configure:1586: found /usr/bin/gawk configure:1596: result: gawk configure:1606: checking whether make sets $(MAKE) configure:1626: result: yes configure:1810: checking for style of include used by make configure:1838: result: GNU configure:1909: checking for gcc configure:1925: found /usr/bin/gcc configure:1935: result: gcc configure:2179: checking for C compiler version configure:2182: gcc --version </dev/null >&5 gcc (GCC) 4.8.3 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  configure:2185: $? = 0 configure:2187: gcc -v </dev/null >&5 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/lto-wrapper.exe Target: x86_64-pc-cygwin Configured with: /cygdrive/i/szsz/tmpp/gcc_old/gcc-4.8.3-5.x86_64/src/gcc-4.8.3/configure --srcdir=/cygdrive/i/szsz/tmpp/gcc_old/gcc-4.8.3-5.x86_64/src/gcc-4.8.3 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --libdir=/usr/lib --datarootdir=/usr/share --docdir=/usr/share/doc/gcc --htmldir=/usr/share/doc/gcc/html -C --build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=x86_64-pc-cygwin --without-libiconv-prefix --without-libintl-prefix --libexecdir=/usr/lib --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --enable-bootstrap --enable-__cxa_atexit --with-dwarf2 --with-tune=generic --enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm --enable-libquadmath --enable-libquadmath-support --enable-libssp --enable-libada --enable-libgcj-sublibs --disable-java-awt --disable-symvers --with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as --with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix --without-libintl-prefix --with-system-zlib --enable-linker-build-id Thread model: posix gcc version 4.8.3 (GCC)  configure:2190: $? = 0 configure:2192: gcc -V </dev/null >&5 gcc: error: unrecognized command line option '-V' gcc: fatal error: no input files compilation terminated. configure:2195: $? = 1 configure:2218: checking for C compiler default output file name configure:2221: gcc conftest.c >&5 /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: cannot find crt0.o: No such file or directory /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lcygwin collect2: error: ld returned 1 exit status configure:2224: $? = 1 configure: failed program was: | /* confdefs.h. */ |  | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "wol" | #define VERSION "0.7.1" | #define PACKAGE "wol" | #define VERSION "0.7.1" | #define _GNU_SOURCE 1 | /* end confdefs.h. */ |  | int | main () | { |  | ; | return 0; | } configure:2263: error: C compiler cannot create executables See `config.log' for more details.  ## ---------------- ## ## Cache variables. ## ## ---------------- ##  ac_cv_build=x86_64-unknown-cygwin ac_cv_build_alias=x86_64-unknown-cygwin ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= ac_cv_env_CFLAGS_value= 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= ac_cv_env_LDFLAGS_value= ac_cv_env_build_alias_set= ac_cv_env_build_alias_value= ac_cv_env_host_alias_set= ac_cv_env_host_alias_value= ac_cv_env_target_alias_set= ac_cv_env_target_alias_value= ac_cv_host=x86_64-unknown-cygwin ac_cv_host_alias=x86_64-unknown-cygwin ac_cv_path_install='/usr/bin/install -c' ac_cv_prog_AWK=gawk ac_cv_prog_ac_ct_CC=gcc ac_cv_prog_make_make_set=yes  ## ----------------- ## ## Output variables. ## ## ----------------- ##  ACLOCAL='$ /cygdrive/h/Temporal/wol/wol-0.7.1/missing --run aclocal-1.7' ALLOCA='' AMDEPBACKSLASH='\' AMDEP_FALSE='#' AMDEP_TRUE='' AMTAR='$ /cygdrive/h/Temporal/wol/wol-0.7.1/missing --run tar' AUTOCONF='$ /cygdrive/h/Temporal/wol/wol-0.7.1/missing --run autoconf' AUTOHEADER='$ /cygdrive/h/Temporal/wol/wol-0.7.1/missing --run autoheader' AUTOMAKE='$ /cygdrive/h/Temporal/wol/wol-0.7.1/missing --run automake-1.7' AWK='gawk' BUILD_INCLUDED_LIBINTL='' CATOBJEXT='' CC='gcc' CCDEPMODE='' CFLAGS='' CPP='' CPPFLAGS='' CYGPATH_W='cygpath -w' DATADIRNAME='' DEFS='' DEPDIR='.deps' ECHO_C='' ECHO_N='-n' ECHO_T='' EGREP='' EXEEXT='' EXTRA_LIBS='' GENCAT='' GLIBC21='' GMSGFMT='' HAVE_ASPRINTF='' HAVE_POSIX_PRINTF='' HAVE_SNPRINTF='' HAVE_WPRINTF='' INSTALL_DATA='$ -m 644' INSTALL_PROGRAM='$' INSTALL_SCRIPT='$' INSTALL_STRIP_PROGRAM='$ $(install_sh) -c -s' INSTOBJEXT='' INTLBISON='' INTLLIBS='' INTLOBJS='' INTL_LIBTOOL_SUFFIX_PREFIX='' LDFLAGS='' LIBICONV='' LIBINTL='' LIBOBJS='' LIBS='' LN_S='' LTLIBICONV='' LTLIBINTL='' LTLIBOBJS='' MAKEINFO='$ /cygdrive/h/Temporal/wol/wol-0.7.1/missing --run makeinfo' MKINSTALLDIRS='' MSGFMT='' MSGMERGE='' OBJEXT='' P2M='' PACKAGE='wol' PACKAGE_BUGREPORT='' PACKAGE_NAME='' PACKAGE_STRING='' PACKAGE_TARNAME='' PACKAGE_VERSION='' PATH_SEPARATOR=':' PERL='' POD2TEXI_FALSE='' POD2TEXI_TRUE='' POSUB='' RANLIB='' SED='' SET_MAKE='' SHELL='/bin/sh' STRIP='' USE_INCLUDED_LIBINTL='' USE_NLS='' VERSION='0.7.1' XGETTEXT='' ac_ct_CC='gcc' ac_ct_RANLIB='' ac_ct_STRIP='' am__fastdepCC_FALSE='' am__fastdepCC_TRUE='' am__include='include' am__leading_dot='.' am__quote='' bindir='$/bin' build='x86_64-unknown-cygwin' build_alias='' build_cpu='x86_64' build_os='cygwin' build_vendor='unknown' datadir='$/share' exec_prefix='NONE' host='x86_64-unknown-cygwin' host_alias='' host_cpu='x86_64' host_os='cygwin' host_vendor='unknown' includedir='$/include' infodir='$/info' install_sh='/cygdrive/h/Temporal/wol/wol-0.7.1/install-sh' libdir='$/lib' libexecdir='$/libexec' localstatedir='$/var' mandir='$/man' oldincludedir='/usr/include' prefix='NONE' program_transform_name='s,x,x,' sbindir='$/sbin' sharedstatedir='$/com' sysconfdir='$/etc' target_alias=''  ## ----------- ## ## confdefs.h. ## ## ----------- ##  #define PACKAGE "wol" #define PACKAGE "wol" #define PACKAGE_BUGREPORT "" #define PACKAGE_NAME "" #define PACKAGE_STRING "" #define PACKAGE_TARNAME "" #define PACKAGE_VERSION "" #define VERSION "0.7.1" #define VERSION "0.7.1" #define _GNU_SOURCE 1  configure: exit 77  

Dies scheint das erwartete Problem beim Kompilieren eines 32-Bit-Programms auf einer 64-Bit- Plattform zu melden .

Kann man das lösen ?
Ich habe einige Informationen über die Verwendung des Flags "-m32" im gcc-Compiler oder das Senden einiger Variablen (Exportieren) vor dem Kompilieren gelesen. Das Problem scheint jedoch eher vom Konfigurationsteil zu stammen, nicht vom Kompilieren. Die Reihenfolge scheint zu sein:

  • .konfigurieren
  • machen
  • überprüfen
  • installiere
  • mach sauber

und der erste Schritt schlägt fehl :-(.
Wie auch immer, ich habe versucht:

export CFLAGS='-m32' export CXXFLAGS='-m32' export LDFLAGS='-m32' 

Aber das ./configureSkript versagt immer wieder.

Ich habe übrigens versucht, den Fehler zu ignorieren und mit dem Kompilieren fortzufahren (2. Schritt):

make 

aber es gibt einige Fehlermeldung (sorry, mein CygWin scheint in spanisch zu sein) etwas ähnliches No objective specified and no makefile found.

Ich denke, die Lösung dieses Problems könnte mir helfen, 32-Bit-Programme auf CygWin 64 zu kompilieren.
Ich bitte um Hilfe.

PS: Ich weiß, dass dieses Tool eine Win32-Version zum Download zur Verfügung hat, und es gibt auch andere Programme zum Aufwecken über LAN. Aber wo ist das Lernen, um Dinge zu lösen?

BEARBEITEN: Ich habe die folgenden Paketnamen auf CygWin installiert:

gcc-core gdb make mingw-gcc-core mingw-gcc-g++ mingw-w32api 

EDIT-2: Ich habe meinen Tag gerettet, indem ich CygWin 64-Bit deinstalliert und die 32-Bit-Version installiert habe. Dies alles lief reibungslos und gut.

1
Hast du gcc installiert? Haben Sie das 32-Bit-GCC installiert? Elliott Frisch vor 9 Jahren 0
@ AlliottFrisch, ich habe diese Info zu meinem ursprünglichen Beitrag hinzugefügt, danke. Ich weiß nicht, ob diese Pakete 32 oder 64 Bit haben. Nun, ich nehme an, die Pakete haben 64 Bits, genau wie CygWin, aber ich weiß nicht, ob der Kompilierabschnitt 32 oder 64 Bits ist. Sopalajo de Arrierez vor 9 Jahren 0
Der Fehler * Compiler kann keine ausführbaren Dateien erstellen * sagt. Elliott Frisch vor 9 Jahren 0
Also, @ElliottFrisch, ich verstehe, dass ich noch die `32-bit gcc` installieren muss. Wie kann ich 32-Bit-gcc auf 64-Bit-CygWin installieren? Ist das möglich? Sopalajo de Arrierez vor 9 Jahren 0
Ich bin nicht sicher, aber wenn Ihr System überhaupt nicht kompiliert werden kann, werden Sie nicht sehr weit kommen. Elliott Frisch vor 9 Jahren 0
Warum verwenden Sie einfach nicht die 32-Bit-Version, aber ja, Sie benötigen die 32-Bit-Objekte, was offensichtlich ist. Ramhound vor 9 Jahren 0

1 Antwort auf die Frage

4
mdpc

Cygwin-Pakete gibt es in zwei Versionen, einer 64-Bit-Version und einer 32-Bit-Version. Da die 64-Bit-Bibliothek neuer als die 32-Bit-Bibliothek ist, fehlen einige Bibliotheken und Programme.

Sie können sowohl die 32-Bit- als auch die 64-Bit-Version von Cygwin ohne Probleme gleichzeitig installieren lassen. Wenn Sie also den 32-Bit-Modus kompilieren und weiter verwenden möchten, installieren Sie den 32-Bit-Cygwin und rufen Sie seine Bash-Shell auf.

Cygwin 32-Bit wird normalerweise in c: \ cygwin installiert, und das 64-Bit-Cygwin wird in c: \ cygwin64 installiert.

Wenn Sie also 32-Bit-Funktionen benötigen, installieren Sie das 32-Bit-Programm cygwin und alle erforderlichen Pakete, die Sie zur Durchführung Ihrer Aufgabe benötigen.

HINWEIS: 32-Bit-Programme werden auf 64-Bit-Windows-Plattformen ausgeführt.

Windows- und 32-Bit-Windows-Programme laufen unter Windows 7 64 Bit einwandfrei. Wenn ich CygWin 32 und 64 Bits installiere, muss ich mich daran erinnern / testen, welche meiner Programme ausgeführt werden kann: Einige laufen auf 32 Bits und einige auf 64. Ich denke, das ist ein Nachteil. Wenn die 64-Bit-Version von CygWin einige Mängel aufweist, ziehe ich es vor, nur die 64-Bit-Version zu verwenden. Vielen Dank. Sopalajo de Arrierez vor 9 Jahren 0
Entschuldigung, @mdpc, ich möchte sagen "Ich ziehe vor, nur die 32-Bit-Version zu verwenden". Es war ein Tippfehler, sorry. Sopalajo de Arrierez vor 9 Jahren 0