32bit programme auf 64bit systemen
32bit programme auf 64bit systemen
Hallo,
ich habe ein debian Woody und möchte gerne einen teamspeak server darauf installieren.
Das dumme ist das der Server nur als binary für 32bit Systeme zu haben ist und ich ein64bit System habe. Habe gelesen das man mit den lib32 libs problemlos 32bit Software auf 64bit zum laufen bekommen kann. Habe dann auch diese beiden libs installiert:
lib32gcc1 - GCC support library (ia32)
lib32stdc++6 - The GNU Standard C++ Library v3 (ia32)
Die große Frage ist wie benutze ich diese, also wie teile ich mit das ein Programm das ich startein 32 bit Prog ist und diese libs nutzen soll.
Danke
Kartoffel
ich habe ein debian Woody und möchte gerne einen teamspeak server darauf installieren.
Das dumme ist das der Server nur als binary für 32bit Systeme zu haben ist und ich ein64bit System habe. Habe gelesen das man mit den lib32 libs problemlos 32bit Software auf 64bit zum laufen bekommen kann. Habe dann auch diese beiden libs installiert:
lib32gcc1 - GCC support library (ia32)
lib32stdc++6 - The GNU Standard C++ Library v3 (ia32)
Die große Frage ist wie benutze ich diese, also wie teile ich mit das ein Programm das ich startein 32 bit Prog ist und diese libs nutzen soll.
Danke
Kartoffel
32 bit Programme kannst du ganz normal starten. Der Dynamic Linker kümmert sich um dem Rest. Falls dieser die entsprechenden Libraries nicht finden sollte, kannst du mit ldconfig bzw. der Environmentvariable LD_LIBRARY_PATH nachhelfen. Das ist aber eigentlich kein biarch-spezifischer Task.kartoffel hat geschrieben:Die große Frage ist wie benutze ich diese, also wie teile ich mit das ein Programm das ich startein 32 bit Prog ist und diese libs nutzen soll.
Gruß
gms
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
Das scheint der Fall zu sein zumindest startet das Pogramm genauso wenig wie vorher. Mir ist nicht ganz klar wie ich das mit ldconfig umgehen kann.Falls dieser die entsprechenden Libraries nicht finden sollte, kannst du mit ldconfig bzw. der Environmentvariable LD_LIBRARY_PATH nachhelfen.
Ich habe mal das hier probiert:
Code: Alles auswählen
ldconfig -n /usr/lib32/
Code: Alles auswählen
./server_linux: cannot execute binary file
Sorry, ist ein Sarge[/code]und BTW - Woody ist oldstable Idea - bist du dir sicher das du Woody hast und nicht Sarge oder Etch bzw. SID?
Das gibt folgendes zurück:
Code: Alles auswählen
ldd server_linux
/usr/bin/ldd: line 95: /usr/bin/lddlibc4: cannot execute binary file
not a dynamic executable
kannst du einmal das File /usr/bin/ldd öffnen und dort nach lddlibc4 suchen. Wenn meine Vermutung richtig ist, sollte dieses in einer Funktion "noelf" zu finden sein, und nur dort. Weiters, gibt es wahrscheinlich auf deinem System auch keind /usr/bin/lddlibc4 Datei.
Diese Bug kannst du beheben, indem du diese Funktion umschreibst:
Aber eigentlich ist das nicht wirklich unser Problem. Ich kenne den Timespeak Server zwar nicht, aber ich vermute, daß es sich bei "server_linux" um ein Script handelt, über welches das eigentliche Binary gestartet wird.
Das könntest du auch einmal überprüfen und danach nochmals "ldd <program>" mit dem richtigen Programm aufrufen
Gruß
gms
Diese Bug kannst du beheben, indem du diese Funktion umschreibst:
Code: Alles auswählen
nonelf ()
{
# Maybe extra code for non-ELF binaries.
return 1;
}
Das könntest du auch einmal überprüfen und danach nochmals "ldd <program>" mit dem richtigen Programm aufrufen
Gruß
gms
also ich habe bei der funktion jetzt alles auskommentiert bis auf
funktioniert jedoch trotzdem nicht. Oder soll die Funktion immer true zurück geben?
ach ich probiers einfach mal....
Code: Alles auswählen
return 1;
ach ich probiers einfach mal....
Nein, es kommt wieder ein cannot execute binary file.rein interessehalber, ist dieses Programm ausführbar ?
Code: Alles auswählen
readelf -h server_linux
Code: Alles auswählen
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x8053610
Start of program headers: 52 (bytes into file)
Start of section headers: 940616 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 5
Size of section headers: 40 (bytes)
Number of section headers: 21
Section header string table index: 20
Code: Alles auswählen
file server_linux
server_linux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
Meinst du die cpu? das ist nen opteron.Was für ein 64 bit System hast du eigentlich laufen ?
Vermutlich fehlt dir irgendwas, du könntest dir einmal den gcc-3.4 installieren, das hat zum Beispiel hier http://www.debianforum.de/forum/viewtop ... highlight=
ganz gut funktioniert
Gruß
gms
ganz gut funktioniert
Gruß
gms
Der Standard gcc (3.3) ist nur für reinen 64 bit Code erstellt worden, daher werden bei diesem die benötigten 32 bit Libraries auch nicht installiert. Daher solltest du einmal ein "apt-get instal gcc-3.4" ausführen. Den Compiler selber kannst du ja danach wieder entfernen.kartoffel hat geschrieben:gcc und g++ habe ich installiert es bleibt jedoch beim alten.
Ich frage mich auch welchen nutzen das haben soll wenn ich den quellcode nicht habe und somit das programm garnicht selber kompilieren kann.
verflucht das ist doch zum mäusemelken.
Gruß
gms