Source auf 64-Bit-System als 32-bit-Bin kompilieren?

14/10/2010 - 22:36 von Uwe Premer | Report spam
Keine Ahnung, ob ich hier richtig mit meiner Frage bin:

kann man überhaupt einen Linux-Source auf einem 64-Bit-System als
32-Bit-Binary kompilieren und wie geht sowas?
Einfach als Option via ./configure?

Die 32-Bit-Libs sind soweit installiert.

Uwe
System: IBM Lenovo R60, Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz
OS: openSUSE 11.3 (x86_64)
Kernel: Linux 2.6.34.4-0.1-desktop #1
KDE: 3.5.10 "release 41"
 

Lesen sie die antworten

#1 Jan Seiffert
14/10/2010 - 23:42 | Warnen spam
Uwe Premer schrieb:
Keine Ahnung, ob ich hier richtig mit meiner Frage bin:

kann man überhaupt einen Linux-Source auf einem 64-Bit-System als
32-Bit-Binary kompilieren?



Ja und nein
Allgemein geht das nicht, ausser auf best. Systemen auf denen es der Compiler
unterstuetzt, z.B. x86. Aber auch nur wenn er fit ist fuer "multilib". Es
koennte noch auf PPC & SPARC gehen.

und wie geht sowas?



Eigentlich ist es einfach:
In die CFLAGS "-m32" packen, wenn es GCC ist.

Dann sind da aber noch so Details...

Einfach als Option via ./configure?

Die 32-Bit-Libs sind soweit installiert.




Eben wie das die binearen Teile der Libs in 32 Bit da sein muessen. Auch sollte
sie der Linker finden, also lustiges -L hinzufuegen vielleicht. Sch... wird es
wenn sich die Header einer Lib zwischen 32 & 64 Bit unterscheiden. Also auch
noch Header Pfade umbiegen.

Das kann man alles configure mitgeben, aber auch nur bis zu gewissen Grenzen.

Es kann also einfacher sein, eine "cross-umgebung" aufzusetzen.
Grade unter x86 ist das einfach: Da der Kernel 32 & 64 Bit executables
ausfuehren kann einfach die 32 Bit Version der Distro in einen Ordner
installieren und:
mount -t proc none /pfad/zu/chroot/proc
mount -o bind /dev /pfad/zu/chroot/dev
chroot /pfad/zu/chroot /bin/sh

Uwe



Gruss
Jan

const int TEN; /* Mine goes to eleven */

Ähnliche fragen