Sylvihasi Geschrieben 27. April 2006 Geschrieben 27. April 2006 Hallo, ich habe auf Solaris c++ Sourcen compiliert zu einer Shared Library und mit -L ein Verzeichnis angeben, in dem eine normlib.a Datei ist aber kein -l hinzugebe nimmt er diese dann als Library. Denn ich habe das Problem, dass er die normlib.a nicht finden konnte, wenn ich diese mit -l angegeben habe (mit Pfad, ohne, mit ./ ). --> pwd: /usr/sfw/bin ./g++ /Sylvi/scr/norm.cpp -I /Sylvi/src/include -L /Sylvi/src/library -G -o lib.so (im src : norm.cpp | im src/include: jni.h, jni_md.h, norm.h | im src/library: normlib.a) Oder habe ich bei der Compilierung etwas falsch gemacht? :confused: LG Sylvi Zitieren
nic_power Geschrieben 27. April 2006 Geschrieben 27. April 2006 Hallo, wie sieht denn Dein Linkeraufruf aus? Wenn eine Bibliothek beispielsweise "libnorm.so" heiss und in /libs liegt, dann solltest Du diese mit "cc -o bla -L/libs -lnorm" linken können. Abgesehen davon ist eine ".a" Bibliothek keine Shared-Library! Nic Zitieren
Sylvihasi Geschrieben 29. April 2006 Autor Geschrieben 29. April 2006 Hallo, ich wusste gar nicht, das eine .a keine shared lib ist. Ich hab versucht sie so mit -L /Sylvi/src/library -lnormlib einzubinden, nur dann ha der g++ gesagt er kann die Library nicht finden. Und wenn ich nur -L angebe macht er zwar keine Fehler, aber ich glaube er hat sie nicht genommen. Kann ich irgendwie herausbekommen, ob er sie eingebunden hat bzw mir die Exports anschaun ? LG Sylvi Zitieren
nic_power Geschrieben 29. April 2006 Geschrieben 29. April 2006 Hallo, mit der Option "-L" kannst Du den Suchpfad für Bibliotheken erweitern. D.h. der Linker schaut dann zusätzlich noch in den Verzeichnissen nach, die mit "-L" angegeben werden. Benenne deine Bibliothek mal in "libnorm.a" um und versuchs mit "-L/Sylvi/src/library -lnorm" Nic Nic Zitieren
Sylvihasi Geschrieben 1. Mai 2006 Autor Geschrieben 1. Mai 2006 Hallo, danke -lnorm war sehr gut !!! Aber inzwischen hat er zwar kein Problem mehr mit der Library aber macht folgenden Fehler: ld: Warnung: -Datei /Sylvi/src/library/libnorm.a(norm00.o): falscher ELF-Rechnertype: EM_SPARC Kann das vielleicht daran liegen, dass die libnorm-a auf einem SPARC Solaris compiliert wurde und ich ein x86 habe ? Zitieren
nic_power Geschrieben 1. Mai 2006 Geschrieben 1. Mai 2006 Hallo, ja, die Architekturen sind nicht kompatible zu einander. Auf dem x86 System benötigst Du auch eine entsprechende Bibliothek, die für x86 erstellt wurde. Nic Zitieren
Sylvihasi Geschrieben 1. Mai 2006 Autor Geschrieben 1. Mai 2006 Also muss ich die andere library auch neu erstellen ! Wenn ich nun 12 c-Files habe wie muss ich die denn compilieren ? Alle einzeln ? Wenn ja wie bring ich die dann wieder zusammen ? :confused: LG Sylvi Zitieren
nic_power Geschrieben 2. Mai 2006 Geschrieben 2. Mai 2006 Hallo, üblicherweise sollte da ein Makefile oder ein configure-Skript zum Erstellen des Makefiles mit dabei sein. Im Einzelnen hängt das aber von der Bibliothek ab. Auf alle Fälle musst Du aber alle Dateien neu kompilieren und daraus die Bibliothek erstellen. Nic Zitieren
Sylvihasi Geschrieben 2. Mai 2006 Autor Geschrieben 2. Mai 2006 Hallo, ein Makefile habe ich leider nicht aber naja da muss ich wohl durch ! Also muss ich die anderen Sourcen alle erst in .o-Files umwandeln und diese dann zu einer .a oder einem .so compilieren. LG Sylvi Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.