libcurl.so.4 - No such file or directory

  • Thread starter Thread starter Deleted member 10028
  • Start date Start date
D

Deleted member 10028

Guest
Hallo Zusammen,

ich habe mich heute mit dem Multiplayer "MTA SA" (Multi Theft Auto) beschäftigt.
Kompilieren & Co. war alles kein Problem, doch nun weiß ich leider nicht mehr weiter.

Das System, mit dem ich den MTA-Server kompiliert habe:
- Debian Lenny
- 32-Bit
- Server kann problemlos gestartet werden.

Das System, mit dem ich den MTA-Server starten möchte:
- Debian Lenny
- 64-Bit
- Server kann nicht gestartet werden.


Sobald ich den MTA-Server starten möchte, erhalte ich folgende Meldung:
Code:
libcurl.so.4: cannot open shared object file: No such file or directory
ERROR: Loading network library (net.so) failed!
Press Q to shut down the server!

Ich habe nachgeschaut, ob diese libcurl.so.4 überhaupt existiert, hier mein Ergebnis:
Code:
ls -l /usr/lib | grep libcurl
-rw-r--r--  1 root root  553K 2010-03-27 06:52 libcurl.a
-rw-r--r--  1 root root   809 2010-03-27 06:52 libcurl.la
lrwxrwxrwx  1 root root    16 2011-05-01 17:53 libcurl.so -> libcurl.so.4.1.0
lrwxrwxrwx  1 root root    12 2011-05-01 17:53 libcurl.so.3 -> libcurl.so.4
lrwxrwxrwx  1 root root    16 2011-05-01 17:53 libcurl.so.4 -> libcurl.so.4.1.0
-rw-r--r--  1 root root  286K 2010-03-27 06:52 libcurl.so.4.1.0
Folglich existieren die benötigten Dateien.

Da das System auf einer 64-Bit-Architektur läuft, habe ich zum Testen die 64er libs von libcurl in die 32er libs verlinkt (Symlink).
Überraschung ... der MTA-Server erkennt zwar die libs, aber scheitert, da es nunmal die 64er libs sind.
Code:
lrwxrwxrwx 1 root root   18 2011-06-14 12:46 libcurl.a -> /usr/lib/libcurl.a
lrwxrwxrwx 1 root root   19 2011-06-14 12:46 libcurl.la -> /usr/lib/libcurl.la
lrwxrwxrwx 1 root root   25 2011-06-14 12:47 libcurl.so -> /usr/lib/libcurl.so.4.1.0
lrwxrwxrwx 1 root root   21 2011-06-14 12:48 libcurl.so.3 -> /usr/lib/libcurl.so.4
lrwxrwxrwx 1 root root   25 2011-06-14 12:48 libcurl.so.4 -> /usr/lib/libcurl.so.4.1.0
lrwxrwxrwx 1 root root   25 2011-06-14 12:48 libcurl.so.4.1.0 -> /usr/lib/libcurl.so.4.1.0
Meldung des MTA-Servers:
Code:
libcurl.so.4: wrong ELF class: ELFCLASS64
Das dies nicht klappen kann, dachte ich mir schon, aber ein Versuch war es mir wert.


Wie bekomme ich den MTA-Server nun also zum "Laufen"?


Gruß
Julian
 
Last edited by a moderator:
Sind die ia32-libs installiert?
Die sollten da liegen wo du testweise die 64bit-Libs hinge-symlink't hast.
 
Kompiliere das Zeugs bitte auf einem 64bit System, dann ersparst Du Dir von vornherein etliche Probleme. Die 32bit-kompatibilitäts-Bibliotheken helfen nur selten und nur, wenn man genau weiss, wie man diese nutzen muss.

Kurz: Entweder 64bit oder 32bit, aber niemals mixen.
 
Auszug aus der Wiki von MTA:
A warning for x64

The MTA:SA server currently cannot be properly compiled in 64-bit mode. Instead, you should compile it in 32-bit mode and run it using 32-bit compatibility mode (use the -m32 flag).
Deshalb versuche ich es über das 32-Bit System.
 
Der Versuch ein System auf einer Plattform zu kompilieren und dann auf einer anderen auszuführen ist ziemlicher Wahnsinn. Wenn überhaupt, dann bitte Cross-Compilieren, also für die Zielplattform. Das gibt aber immernoch gut Ärger mit Shared Libraries.

Einfach auf der Zielplattform compilieren und alles ist gut.

Edit: Compile in 32bit mode meint nicht, dass du es auf einer 32bit-Kiste bauen sollst, sondern auf der Zielplattform mit installierten 32bit-Libs.
 
Das heißt also, da es Abhängigkeitsprobleme gibt, kann ich es nur auf 32-Bit betreiben.
Nun gut, mal sehen, wie ich das realisiere.

Vielen Dank für eure Antworten.

@PapaBaer, deinem Edit:
Ich weiß schon, was damit gemeint ist, aber auf 64-Bit gibt es scheinbar Abhängigkeitsprobleme, weshalb ich es vergessen kann^^
 
Code:
/usr/bin/ld: /home/mta/mtasa-blue/vendor/tinyxml/libtinyxml.a(libtinyxml_a-tinyxml.o): relocation R_X86_64_32S against `vtable for TiXmlNode' can not be used when making a shared object; recompile with -fPIC
/home/mta/mtasa-blue/vendor/tinyxml/libtinyxml.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[3]: *** [xmll.la] Error 1
make[3]: Leaving directory `/home/mta/mtasa-blue/Shared/XML'
make[2]: *** [install] Error 2
make[2]: Leaving directory `/home/mta/mtasa-blue/Shared/XML'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/mta/mtasa-blue/Shared'
make: *** [install-recursive] Error 1
Wenn sich mein vServer mal wieder melden würde (der Reboot von den Hetznerkisten dauert ewig), könnte ich weitere Informationen liefern, aber ich habe diesbezüglich schon in vielen ähnlichen Threads nachlesen können, wie dieses Problem "umgangen" werden kann.

Sobald ich weiter arbeiten kann und auf ein Ergebnis gekommen bin, werde ich es euch wissen lassen.
 
Folgende Pakete musste ich herunterladen:

• libcurl3_7.18.2-8lenny4_i386.deb
• libidn11_1.8+20080606-1_i386.deb
• libsqlite3-0_3.5.9-6_i386.deb
• libssh2-1_0.18-1_i386.deb

Und folglich müssen diese Pakete auch noch ins System integriert werden:
Code:
dpkg -X libcurl3_7.18.2-8lenny4_i386.deb /emul/ia32-linux
dpkg -X libidn11_1.8+20080606-1_i386.deb /emul/ia32-linux
dpkg -X libsqlite3-0_3.5.9-6_i386.deb /emul/ia32-linux
dpkg -X libssh2-1_0.18-1_i386.deb /emul/ia32-linux

Der MTA-Server läuft nun auf meinem 64-Bit System.


@Moderatoren:
Das Problem ist gelöst und der Thread kann geschlossen werden.


Danke für eure Unterstützung.
 
Last edited by a moderator:
Alternativ hättest du auch ein 32bit-chroot mit debootstrap und schroot aufsetzen können :)
 
Nur so eine beiläufige Frage, wieso installierst du nicht apt-get die fehlenden Libs. Unter anderen kann man mit apt-file auch nach einem Paket suchen, welches eine bestimmte Datei enthalten soll. Bei einem 64-Bit-System hat man dann direkt mehrere Treffer. Einmal die 32-Bit-Version und einmal die 64-Bit-Version einer Lib. Unter anderem sollte es auch funktionieren, wenn man die ia32-libs installiert hat. Wieso so viele damit Probleme haben, ist mir ein Rätsel.

Bisher hatten immer alle anderen damit Probleme, nie ich selbst. Manchen fehlte für ein Plugin die zlib der nächste hatte die libgcc_s nicht usw.. und ja, meine Server liefen bisher immer mit der 64-Bit-Version von Debian.

Vielleicht wäre es aber auch besser, wenn du mal versuchst das Problem mit dem Kompilieren auf deinem 64-Bit-System in den Griff zu bekommen. Die Entwickler des Spiels haben sicherlich auch ein Forum. Dort wird dir bestimmt geholfen.
 
Last edited by a moderator:
Back
Top