Kompilieren auf anderem Rechner und anderer libc
Hallo, ich möchte gerne ein Programm (jpegtran [1]) auf einem anderen Rechner laufen lassen. Leider ist es nicht möglich, daß ich das Programm auf dem Zielrechner kompiliere. (=Webserver meines Providers) Bei mir zuhause (Suse 9.0) läuft die Kompilierung problemlos durch, und das Programm arbeitet einwandfrei. Kopiere ich das Binary aber nun auf den Zielrechner findet dieses aber die offenbar zwingend benötigte glibc 2.3 nicht, und bricht unverrichteter Dinge ab. (Fehlermeldung ähnlich wie: "... /lib/glibc 2.3 not found (required by jpegtran)" Offenbar ist die auf dem Zielrechner installierte libc von einer anderen Version, oder an einem anderen Ort. :-( Meine Idee ist nun ich stelle jpegtran halt "seine" libc zur Seite. Also diejenige libc, mit der es auch (lokal) kompiliert wurde. Kopiere die libc also ebenfalls auf den Zielrechner. Da ich aber auf dem Zielrechner kein Zugriff auf das /lib-Verzeichnis habe muß ich die libc im selben Verzeichnis wie das Binary jpegtran unterbringen. Gibt es eine Möglichkeit dem gcc bei der Kompilierung zu sagen, daß das kompilierte Programm seine libc ausnahmsweise nicht wie allgemein üblich im Verzeichnis /lib suchen soll, sondern im eigenen Verzeichnis ( ./ ) ? Von C- oder C++-Programmierung habe ich bislang noch kaum Ahnung. -Ralph [1] Ist ein C- oder ein C++-Programm. http://www.ijg.org/
Hi, das kannst Du beim ./configure mitgeben... ./configure --irgendein-schalter /deine/libs leider weiß ich gred nicht wie der schalter heißt :( aber configure sagt dir das. Am Fr, den 11.06.2004 schrieb Ralph Müller um 22:33:
Hallo,
ich möchte gerne ein Programm (jpegtran [1]) auf einem anderen Rechner laufen lassen. Leider ist es nicht möglich, daß ich das Programm auf dem Zielrechner kompiliere. (=Webserver meines Providers) Gibt es eine Möglichkeit dem gcc bei der Kompilierung zu sagen, daß das kompilierte Programm seine libc ausnahmsweise nicht wie allgemein üblich im Verzeichnis /lib suchen soll, sondern im eigenen Verzeichnis ( ./ ) ?
Von C- oder C++-Programmierung habe ich bislang noch kaum Ahnung.
-Ralph
[1] Ist ein C- oder ein C++-Programm. http://www.ijg.org/
greetz, Martin -- Martin Schmiderer Walbenstr. 12 72127 Wankheim
Am Freitag, 11. Juni 2004 22.33 schrieb Ralph Müller:
Bei mir zuhause (Suse 9.0) läuft die Kompilierung problemlos durch, und das Programm arbeitet einwandfrei. Kopiere ich das Binary aber nun auf den Zielrechner findet dieses aber die offenbar zwingend benötigte glibc 2.3 nicht, und bricht unverrichteter Dinge ab. (Fehlermeldung ähnlich wie: "... /lib/glibc 2.3 not found (required by jpegtran)" Offenbar ist die auf dem Zielrechner installierte libc von einer anderen Version, oder an einem anderen Ort. :-(
Hallo Ralph, Du kannst auch dein Programm statisch binden. Es sind dann keine weiteren libs mehr auf dem Zielrechner notwendig. Das Programm wird dann allerdings ziemlich gross. Der Schalter lautet glaub ich --static (man gcc hilft Dir sicher weiter). Grüsse Urs
participants (3)
-
Martin Schmiderer
-
Ralph Müller
-
Urs Schaffner