Shared Lib (.so) mit Kdevelop erstellen
Shared Lib (.so) mit Kdevelop erstellen
Hallo!
Kann mir mal jemand erklären, wie ich mit Kdevelop eine
Shared Lib (.so) erstellen kann?
Das hier funktioniert so nicht:
http://www.kdevelop.org/index.html?file ... library.3F
Allein das Präfix "bin" kann ja schon nicht stimmen.
Kann mir mal jemand erklären, wie ich mit Kdevelop eine
Shared Lib (.so) erstellen kann?
Das hier funktioniert so nicht:
http://www.kdevelop.org/index.html?file ... library.3F
Allein das Präfix "bin" kann ja schon nicht stimmen.
-
- Beiträge: 295
- Registriert: 30.11.2006 22:26:48
- Lizenz eigener Beiträge: GNU General Public License
Re: Shared Lib (.so) mit Kdevelop erstellen
Genau wie dort beschrieben erstellt man eine shared lib (.so) Datei.
Was genau klappt den nicht?
Was genau klappt den nicht?
mfg
Günni
Günni
Re: Shared Lib (.so) mit Kdevelop erstellen
kommt aber auch auf das Buildsystem an, bzw kannst du bei Verwendung von Automake auch eine Libtool-Bibliothek erstellen, vielleicht kommt das auch eher an das gewünschte heran.
nachdem in dieser FAQ aber die richtigen Compiler und Linkersettings spezifiziert werden, kommt jedenfalls auch eine Shared-Library dabei raus
Gruß
gms
nachdem in dieser FAQ aber die richtigen Compiler und Linkersettings spezifiziert werden, kommt jedenfalls auch eine Shared-Library dabei raus
Gruß
gms
Re: Shared Lib (.so) mit Kdevelop erstellen
Es wird einfach ein binary erstellt, ohne Endung .so. Und installiert würde es nach prefix/bin, anstatt prefix/lib.
Re: Shared Lib (.so) mit Kdevelop erstellen
wenn du das nicht möchtest ( der Vorschlag in dieser FAQ ist auch wahrscheinlich eher für Plugins gedacht ), dann erstelle das neue Target als Libtool-Bibliothekmase76 hat geschrieben:Es wird einfach ein binary erstellt, ohne Endung .so. Und installiert würde es nach prefix/bin, anstatt prefix/lib.
Re: Shared Lib (.so) mit Kdevelop erstellen
Eine libtool-Bibliothek hab ich jetzt versucht. Es kommt eine .la und eine .so heraus.
Aber warum alles in einem versteckten Ordner .libs. Dort liegt nun auch mein Testbinary,
also kein Wrapper-Script mehr. Un die .so liegt auch nur dort.
Und wenn man diesen versteckten Ordner beachtet, dann funktioniert auch der Debuger
wieder.
Es sieht nun so aus:
Ich habe ein Unterprojekt namens "src" erstellt.
Dann ein Target libtool-Bibliothek, in die ich nur die cpp-Dateien eingefügt habe.
Dann ein Target Header, wo ich die h-Dateien eingefügt habe, die später unter include liegen sollen.
Dann noch Header-Noinst, wo die h-Dateien drin sind, die benötigt werden, aber später nicht
Dann ein Bin-Target, mit dem ich die Bibliothek beim Entwickeln testen kann.
unter include installiert werden sollen.
So ergibt sich folgende Struktur:
projectdir/src/wrapperscript für das Testprogramm und .la
projectdir/src/.libs/Binary des Testprogramms und .so
Warum also .libs?
Beim Installieren als root wird alles an die gewünschte Stelle kopiert, aber unter prefix/lib liegen nun
.so und .la.
Werden da beide benötigt?
Aber warum alles in einem versteckten Ordner .libs. Dort liegt nun auch mein Testbinary,
also kein Wrapper-Script mehr. Un die .so liegt auch nur dort.
Und wenn man diesen versteckten Ordner beachtet, dann funktioniert auch der Debuger
wieder.
Es sieht nun so aus:
Ich habe ein Unterprojekt namens "src" erstellt.
Dann ein Target libtool-Bibliothek, in die ich nur die cpp-Dateien eingefügt habe.
Dann ein Target Header, wo ich die h-Dateien eingefügt habe, die später unter include liegen sollen.
Dann noch Header-Noinst, wo die h-Dateien drin sind, die benötigt werden, aber später nicht
Dann ein Bin-Target, mit dem ich die Bibliothek beim Entwickeln testen kann.
unter include installiert werden sollen.
So ergibt sich folgende Struktur:
projectdir/src/wrapperscript für das Testprogramm und .la
projectdir/src/.libs/Binary des Testprogramms und .so
Warum also .libs?
Beim Installieren als root wird alles an die gewünschte Stelle kopiert, aber unter prefix/lib liegen nun
.so und .la.
Werden da beide benötigt?
Re: Shared Lib (.so) mit Kdevelop erstellen
die .la Datei wird nicht umbedingt benötigt, erleichert Libtool jedoch die Arbeit, wenn ein anderes Projekt deine Shared Library unter Verwendung von Libtool einbinden möchte. Das ist eine Textdatei, die zusätzliche Informationen, wie z.B Anhängigkeiten enthält
Warum das .libs Verzeichnis genau benötigt wird, weiß ich jetzt auch nicht 100prozentig. Vielleicht hat es damit zu tun, daß Libtool gleichzeitig statische und dynamische Libraries erstellen kann und daher auch die Object-Dateien zweimal gebaut werden müssen ( einmal mit -fPIC und einmal ohne ), oder weil die Shared Libraries bei der Installation noch relinkt werden ( damit der Library-Suchpfad ( LD_RUN_PATH) in die Library eingetragen wird )
Gruß
gms
Warum das .libs Verzeichnis genau benötigt wird, weiß ich jetzt auch nicht 100prozentig. Vielleicht hat es damit zu tun, daß Libtool gleichzeitig statische und dynamische Libraries erstellen kann und daher auch die Object-Dateien zweimal gebaut werden müssen ( einmal mit -fPIC und einmal ohne ), oder weil die Shared Libraries bei der Installation noch relinkt werden ( damit der Library-Suchpfad ( LD_RUN_PATH) in die Library eingetragen wird )
Gruß
gms
Re: Shared Lib (.so) mit Kdevelop erstellen
Na jedenfalls muss ich die Datei in .libs ausführen.
Ansonsten geht nicht viel.
Ansonsten geht nicht viel.
Re: Shared Lib (.so) mit Kdevelop erstellen
Hier wäre eigentlich von Libtool vorgesehen, daß es als Wrapper verwendet wird, z.B wenn du deine Programm debuggen möchtest "libtool --mode=execute gdb testprog"mase76 hat geschrieben:Na jedenfalls muss ich die Datei in .libs ausführen.
Ansonsten geht nicht viel.
Re: Shared Lib (.so) mit Kdevelop erstellen
Ja und wo soll ich das in Kdevelop angeben?gms hat geschrieben:Hier wäre eigentlich von Libtool vorgesehen, daß es als Wrapper verwendet wird, z.B wenn du deine Programm debuggen möchtest "libtool --mode=execute gdb testprog"mase76 hat geschrieben:Na jedenfalls muss ich die Datei in .libs ausführen.
Ansonsten geht nicht viel.
Re: Shared Lib (.so) mit Kdevelop erstellen
Bei Projekt-Einstellungen -> Debugger -> Debugging-Shell
Re: Shared Lib (.so) mit Kdevelop erstellen
Auch wenn der Thread etwas älter ist, so stehe ich leider auch vor einem Problem bei Kdevelop und Shared Objects. Es klappt auch alles so weit wie es soll, ein Shared Object wird erstellt und landet auch in dem .libs Verzeichnis, doch leider wird es nicht libxxx.so genannt sondern grundsätzlich libxxx.0.0.0.
Jemand ne Idee was man da noch falsch gemacht haben kann?
Jemand ne Idee was man da noch falsch gemacht haben kann?