Fragen zu .so
-
Ich bin grade etwas ratlos. Unter Windows habe ich bei Shared Libs diese Möglichkeiten zu exportieren:
class _declspec(dllexport) MyClass {};
Oder einzelne Funktionen über ein .def-file:
LIBRARY EXPORT MyExport @1
Wie würde ich hier bei beiden Möglichkeiten unter Linux vorgehen? Mein Problem ist, dass Coide::Blocks zwar die .so erstellt, aber keine import-library. Oder wird das unter Linux anders gehandelt?
Gibts ein endant zum Dependency Walker unter Linux? Oder eine Möglichkeit sich die exportierten Symbole anzusehen?
Danke
rya.
-
Du kannst Dir die Symbole mit ldd ansehen. Eine Exportbibliothek gibt es nicht. Wenn Du beim Linker -lbibliothek angibst, und er in den Linkerpfaden eine libbibliothek.so findet, nimmt er diese.
-
LordJaxom schrieb:
Du kannst Dir die Symbole mit ldd ansehen. Eine Exportbibliothek gibt es nicht. Wenn Du beim Linker -lbibliothek angibst, und er in den Linkerpfaden eine libbibliothek.so findet, nimmt er diese.
Oh, danke. Da kann ich lange suchen, wo im g++ ich meine .def angeben kann, hehe. ^^
rya.
-
Sorry, Du kannst Dir die Symbole mit nm anschauen. Mit ldd schaust Du Dir die Abhängigkeiten an.
-
Hehe ok. Da Dependency Walker beides macht, ist das ja quasi die Lösung. :p
edit:
Hab mit den Angaben noch das hier gefunden:
http://paulf.free.fr/objectviewer.html
rya.
-
unter linux werden standardmäßig alle nicht-statischen symbole exportiert. da du c++ verwendest, könnte die option --demangle nützlich sein bei nm.
um eine shared library unter linux zu verwenden, reichen die .so datei und die header dateien. beim linken muss per -l[LIBRARY NAME] hinzugefügt werden. heißt deine bibliothek beispielsweise libxyz.so, so lautet die option -lxyz. per -L kannst du den pfad angeben, in dem diese datei liegt.