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

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...