Allgemeine Frage--> Make

Wenn ich mit Sourcen herunterlade und diese kompiliere, werden dann automatisch Binarys erzeugt, die 100 %ig auf meinen Prozessor zugeschnitten sind?

Werden also nur i386 Befehle genutzt oder bei meinem Pentium II auch die Befehle der i686 Architektur?

Ich nutze momentan gcc 3.0.

man make.conf

Wenn ich mit Sourcen herunterlade und diese kompiliere, werden
dann automatisch Binarys erzeugt, die 100 %ig auf meinen
Prozessor zugeschnitten sind?

Für solche Optimierungen gibt es (bei mir unter FreeBSD 5.1R) die
Datei /etc/make.conf - die hat auch eine man-page. Diese Datei muß
ich mir hier selbst anlegen (oder die Beispieldatei von
/usr/share/examples/etc/make.conf kopieren) und bearbeiten.
Solange sie nicht existiert, wird quasi auf i386 compiled (AFAIK, bin
mir da nicht 100%ig sicher).

Mein Compiler ist

bash-2.05b# gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.2.2 [FreeBSD] 20030205 (release)

Gruß,

Malte.

Wenn ich mit Sourcen herunterlade und diese kompiliere, werden
dann automatisch Binarys erzeugt, die 100 %ig auf meinen
Prozessor zugeschnitten sind?

Kurz: Ja, nein, jein.

Werden also nur i386 Befehle genutzt oder bei meinem Pentium
II auch die Befehle der i686 Architektur?

Ich nutze momentan gcc 3.0.

Lang: Wenn eine Quelle mit

gcc -o foo foo.c

uebersetzt wird dafault’et gcc auf den i386-Befehls-Satz (es sei denn, Du uebersetzt auf einer Sparc o. ae.). Wird ein Paket mit nur

make

uebersetzen, werden die Optionen im Makefile befolgt. Steht dort nichts besonderes, kriegst Du auch i386-Code. Normalerweise kommt vor dem make aber noch ein

./configure

. Dieses stellt mit ‚uname -m‘ Deine genaue Architektur fest und erstellt ein Makefile, was fuer den gcc genau die flags fuer Deine Architektur setzt. Willst Du das nicht solltest Du vorher

./configure --help

aufrufen und den Optionen --build, --host und --target bzw. den gcc-Optionen -mcpu und -march naehere Beachtung schenken.

Falls Du einen Einstieg ins crosscompiling suchst kann ich einen hint[1] empfehlen. Der gibt zumindest Hilfe, falls man sich nur auf Intel-Plattformen aufhaelt.

HTH,
Gruss vom Zentrum.
===footnotes===
[1]
http://hints.linuxfromscratch.org/hints/crosscompili…

Normalerweise kommt vor dem make aber noch
ein

./configure

.

Muss ich unter BSD nie machen, wenn ich aus den Ports installiere.

Dieses stellt mit ‚uname -m‘ Deine genaue Architektur fest

servant# uname -m
i386
servant#

Du kannst mir glauben, daß das kein 386er ist :smile:

Gruß,

Malte.