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)
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.