Shared Lib (.so) mit Kdevelop erstellen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mase76
Beiträge: 1353
Registriert: 19.06.2004 08:57:32

Shared Lib (.so) mit Kdevelop erstellen

Beitrag von mase76 » 23.11.2008 01:45:38

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.

guenni81
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

Beitrag von guenni81 » 23.11.2008 17:12:41

Genau wie dort beschrieben erstellt man eine shared lib (.so) Datei.
Was genau klappt den nicht?
mfg
Günni

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von gms » 23.11.2008 17:30:11

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

mase76
Beiträge: 1353
Registriert: 19.06.2004 08:57:32

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von mase76 » 23.11.2008 17:33:00

Es wird einfach ein binary erstellt, ohne Endung .so. Und installiert würde es nach prefix/bin, anstatt prefix/lib.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von gms » 23.11.2008 17:55:40

mase76 hat geschrieben:Es wird einfach ein binary erstellt, ohne Endung .so. Und installiert würde es nach prefix/bin, anstatt prefix/lib.
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-Bibliothek

mase76
Beiträge: 1353
Registriert: 19.06.2004 08:57:32

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von mase76 » 23.11.2008 17:58:57

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?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von gms » 23.11.2008 18:10:14

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

mase76
Beiträge: 1353
Registriert: 19.06.2004 08:57:32

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von mase76 » 23.11.2008 18:18:03

Na jedenfalls muss ich die Datei in .libs ausführen.
Ansonsten geht nicht viel.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von gms » 23.11.2008 18:33:36

mase76 hat geschrieben:Na jedenfalls muss ich die Datei in .libs ausführen.
Ansonsten geht nicht viel.
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
Beiträge: 1353
Registriert: 19.06.2004 08:57:32

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von mase76 » 23.11.2008 18:39:16

gms hat geschrieben:
mase76 hat geschrieben:Na jedenfalls muss ich die Datei in .libs ausführen.
Ansonsten geht nicht viel.
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"
Ja und wo soll ich das in Kdevelop angeben?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von gms » 23.11.2008 18:47:35

Bei Projekt-Einstellungen -> Debugger -> Debugging-Shell

tafkad
Beiträge: 282
Registriert: 22.09.2004 13:54:26

Re: Shared Lib (.so) mit Kdevelop erstellen

Beitrag von tafkad » 24.03.2009 15:52:46

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?

Antworten