Benjamin Hofstetter wrote:
hi leute
ich ahabe folgendes problem: ich habe einen athlon 700 MHz zu hause und einen pentium III mit 600 MHz an meinem arbeits platz. beide mit suse 7.1.
mein problem ist, wenn ich ein srpm compilieren will, dann kann ich auf dem pentium III rechner das --target=athlon angeben. alles klappt wunderbar, aber zu hause wo ich ein athlon hätte, bricht der befahel rpm -ba --target=athlon SPEC/foo.spec mit einer fehler meldung ab. der fehler ist nicht immer der selbe, aber er hat immer was mit der architektur zu tun.
zum beispiel:
... autoconf CFLAGS="-O2 -march=athlon -funroll-loops -pipe -D_GNU_SOURCE -D_SVID_ SOURCE -Wall" LDFLAGS=-s LIBS=-lc sh configure --prefix=/usr --enable -dups \ --enable-setuid=man --with-device=latin1 \ --mandir=/usr/share/man creating cache ./config.cache checking for gcc... gcc checking whether the C compiler (gcc -O2 -march=athlon -funroll-loops -pipe -D_GNU_SOURCE -D_SVID_SOURCE -Wall -s) works... no configure: error: installation or configuration problem: C compiler c annot create executables. make: *** [GNUmakefile] Error 1 Bad exit status from /var/tmp/rpm-tmp.20673 (%build) trinity:/usr/src/packages #
wieso klappt das auf meinem athlon system nicht?
In Deinem Beispiel überschreibst Du einige vom configure-Script und von den Makefiles zu verarbeitende Flags (CFLAGS, LDFLAGS, LIBS). Was in diesen Flags stehen darf ist keinesfalls frei wählbar, sondern von einer ganzen Reihe von Faktoren abhängig, d.h. man muss genau wissen, welche Flags man setzen darf und welche nicht. Welche das im Einzelfall sind, hängt von einer Vielzahl von Faktoren ab und lässt sich nicht Allgemein beantworten. In Deinem speziellen Beispiel würde der Inhalt von config.log weiterhelfen, so aber bleibt die Glaskugel :) Ganz allgemein gesprochen, sieht Dein Beispiel sehr verdächtig aus: * CFLAGS=-pipe -D_GNU_SOURCE -D_SVID sollte man nur dann setzen, wenn man weiss was man tut. * CFLAGS=-O2 und -march, sowie LDFLAGS=-s sind in vielen Fällen harmlos, es gibt aber Ausnahmen (Ich perönlich halte LDFLAGS=-s für einen Fehler, man kann aber geteilter Meinung darüber sein). * LIBS=-lc ist, zurückhaltend formuliert, ein eindeutiges Indiz für fehlerhafte und/oder schlechte Makefiles, da es eigentlich _niemals_ notwendig ist -lc explizit anzugeben. Ansonsten wäre anzumerken, dass * -march=athlon nicht von allen gcc-Versionen unterstützt wird. Es könnte also sein, dass auf beiden Maschinen verschiedene Versionen des gcc installiert sind. * der gleiche Fehler auftritt, wenn Teile des gcc oder der libc fehlen. * u.U. verschiedene Versionen von RPM installiert seien könnten, die unterschiedliche RPM-FLAGS setzen, falls diese FLAGS aus RPM stammen sollen. Ralf