Zum Inhalt springen

Compilieren von C++ Sourcen auf Solaris


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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 ?

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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 Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...