C-Programm mit shared lib auf anderem Rechner ausführen
-
Hi!
Ich erstelle eine .so-Datei auf meinem Rechner mit folgendem Befehl:
(interessant ist -Wl,-R/usr/local/lib -lsqlite3)gcc -shared -Wl,-soname,olsrd_supernodes -Wl,--version-script=version-script.txt -Wl,--warn-common -fPIC -o olsrd_supernodes.so.0.2 ... .o Dateien ... [b]-Wl,-R/usr/local/lib[/b] -lsqlite3 -Lsrc -lmba -lm -lpthread
Auf meinem Rechner habe ich sqlite3-5-6 mittels ./configure, make, make install installiert.
Sämtliche libs von sqlite3-5-6 habe ich nach src kopiert.Auf meinem Rechner lässt sich die .so-Datei auch nutzen (ist ein olsr-plugin, starte es mit olsrd).
Jetzt möchte ich das Plugin auf einem anderen Rechner (Zielrechner) nutzen, auf dem sqlite nicht installiert ist. Daher habe ich die Libs von sqlite3 (libsqlite3.so.0 libsqlite3.so.0.8.6 libsqlite.a libsqlite.la libsqlite.so libsqlite.so.0 libsqlite.so.0.8.6) mit auf den anderen Rechner kopiert, nach /tmp/src. Das Plugin (meine .so) selbst liegt in tmp. Zusätzlich habe ich
env LD_PRELOAD="/tmp/src/libsqlite3.so.0.8.6"
vorher ausgeführt.
Aber ich bekomme beim Start-Versuch auf dem Zielrechner die Fehlermeldung;
"/tmp/olsrd_supernodes.so.0.2: undefined symbol: sqlite3_open_v2"
Vielen Dank im voraus!
Mein System: Ubuntu 7.10, gnu compiler gcc 4.1.3
Zielrechner: Ubuntu 6.10
-
hast du LD_LIBRARY_PATH auch gesetzt?
Ansonsten installier doch einfach sqlite auf dem anderen Rechner. Bei Ubuntu geht das doch einfach mittels
sudo apt-get install sqlite3
(per Hand sollte man nur etwas kompilieren, wenn es kein passendes Paket dafür gibt).
-
Danke für die Antwort, aber hat leider auch nicht funktioniert. Hab folgendes gemacht:
export LD_LIBRARY_PATH="/tmp/src/" export LD_PRELOAD="/tmp/src/libsqlite3.so.0.8.6"
Aber ohne Erfolg, immer noch gleiche Fehlermeldung:
"/tmp/olsrd_supernodes.so.0.2: undefined symbol: sqlite3_open_v2"
Ansonsten installier doch einfach sqlite auf dem anderen Rechner. Bei Ubuntu geht das doch einfach mittels sudo apt-get install sqlite3 (per Hand sollte man nur etwas kompilieren, wenn es kein passendes Paket dafür gibt).
Hab keine Rechte dazu, aber werd den admin bitten, es für mich zu installieren, wenn keiner weiß, wie es anders geht...