Library erstellen
-
Hallo,
wie erstellt man eine Library aus seinen *.cpp und *.h Dateien, so dass man diese woanders einfach includen kann und bestimmte Methoden draus aufrufen kann? Wie läuft dies? Konnte nirgends etwas passendes dazu finden. Hat jemand eine kleine Anleitung dazu?
Danke!
-
Hallo,
ist abhäbgig von deinem Compiler/Betriebssystem. Welchen Compiler und welches BS benutzt du?
-
Compiler: g++
OS: Suse Linnux
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
schau mal hier:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-285515.html
-
Ich würde dir auf jeden Fall empfehlen, das hier zu lesen. Bibliotheken zu erstellen ist kein trivialies Ding, das man in 2 Minuten erklären kann und das ist auch eine ziemlich lästige Arbeit, deshalb sich mit dem Automake befreunden ist an dieser Steller ratsam, weil das dir sehr viel Arbeit erspart. Den Link finde ich super, hat kleine Beispiele, denen man wunderbar folgen kann.
-
Sehe ich anders. Insbesondere unter Linux ist es sehr einfach.
Source erstellen. FAQ-Script ausführen und schon hat man ein Shared O.
Dauer für Hallo Welt: 1 Minuten.
-
Zuerst musst Du Dein Quelltext normal kompilieren, jedoch mit dem Compiler-Flag -fPIC Dieses Flag heisst auf gut Deutsch positionsunabhängiger Code. Dadurch kann der Code an jede beliebige Adresse gelinkt und geladen werden.
z.B. gcc -fPIC -Wall -c foo.cLinken musst Du dann deine Objektdatei mit
gcc -shared -Wl,-soname libfoo.so -o libfoo.so.1.0.0 foo.o -lcDas Flag -Wl leitet die folgende Anweisung an den Linker weiter. soname libfoo.so ist der symbolische Name der Bibliothek, -o ist der Name der Bibliothek.
Kopiert man nämlich die Lib in ein Verzeichnis, das irgendwo im LIBPATH (oder so) vorkommt, kann man mit ldconfig den zugehörigen Link, in diesem Fall libfoo.so automatisch erzeugen lassen. Die Versionsnummer 1.0.0 ist von mir nur beispielhaft.