Veröffentlicht 27. April 200619 j 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
27. April 200619 j 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
29. April 200619 j 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
29. April 200619 j 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
1. Mai 200619 j 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 ?
1. Mai 200619 j 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
1. Mai 200619 j 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
2. Mai 200619 j 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
2. Mai 200619 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.