Dll in Monodevelop unter Linux erzeugen.

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Dll in Monodevelop unter Linux erzeugen.

Beitrag von Maik81ftl »

Moin Moin,

Bin gerade dabei ein c-Projekt via Monodevelop in eine DLl zu erzeugen.

Sicher fragt Ihr euch, warum ich das hier schreibe? weil diese DLL im Späteren verlauf in fpc genutzt werden soll und ich mir die Arbeit von 2 Units ersparen wollte.

Wenn sich jemand mit Monodevelop auskennt, bitte ich um 'ne kleine Info, wie und wo ich die Ausgabe einstellen kann.

Standartmäsig wird bei mir eine .so erstellt, aber will diese der Fairnishaber auch für Windows bereitstellen.

lg und Frohe Ostern Maik81ftl
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von mschnell »

Das wird Dir nicht viel helfen, aber:

Heißen die Dinger in Linux auch DLL ? Ich dachte, "DLL" ist eine reine Windows-Wort-Schöpfung für eine dynamische Bibliothek.

Mono (also CIL) verwendet - soweit ich weiß - ausschließlich dynamische Bibliotheken. auch ein "Programm" ist eine Bibliothek mit beliebig vielen von außen zugreifbaren Funktionen, von denen eine nur irgendwie als Hauptprogramm gekennzeichnet ist. "Normal" ausführbar ist da sowieso nichts, weil ja alles CIL-Code ist, der das "Framwork" als "CPU" und Betriebssystem verwendet. Das Framework startet also auch das Mono-Programm und nicht das Betriebssystem direkt.

MONO-CIL Bibliotheken sind (wenn nicht aus bestimmten Gründen erforderlich) nicht Linux oder Windows / PC / ARM /MAC / 32 oder 64 Bit spezifisch, sondern für alle Systeme gleich, weil sie von dem System, auf dem sie laufen, gar nichts wissen (sollen), sondern nur das Framework kennen. (Ähnlich wie Java.)

Wenn man einen Funktion in einer CIL-Bibliothek verwenden will, geht das nur (sozusagen) direkt, wenn man selber ein CIL-Programm ist, das vom Framework ausgeführt wird (und nicht ein natives Programm, das auf der CPU unter dem Betriebssystem läuft.

Wenn Du also eine CIL-Funktion von einem nativen Programm (das z.B. mit Lazarus erzeugt wurde) verwenden willst, musst Du das Framework aufrufen und ihm sagen, was Du von ihm willst. Keine Ahnung,m wie das geht.

Wie Du dann Parameter zwischen dem Programm und der CIL-Funktion austauscht, ist eine ganz andere Frage, da CIL völlig andere Datentypen verwendet als Lazarus. Das wird vermutlich ziemlich aufwändig.

Das ganze ist jedenfalls ein sehr interessantes Forschungs-Projekt :D

Lass uns wissen, was dabei herauskommt.
-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von m.fuchs »

Bin ich mir gar nicht sicher ob das Ding nur CIL-Bibliotheken erzeugen kann. Auch VisualStudio enthält ja einen C++-Compiler für unmanaged Code, ich vermute mal MonoDevelop kann das auch.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von Maik81ftl »

Jopp! DLL werden nur via Windows verwendet. schreibe diese aber unter Linux, will die aber via Crosscompierlung auch für WIndows erstellen. Hab z.Z. keine Winmaschine. VMware will a net laufen. :(

wäre suba, wenn mono auch sowas wie crosscompiling kann.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von Eclipticon »

Maik81ftl hat geschrieben:VMware will a net laufen.


Code: Alles auswählen

sudo apt-get install virtualbox-ose

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von mschnell »

Maik81ftl hat geschrieben:wäre suba, wenn mono auch sowas wie crosscompiling kann.

Wie gesagt: Mono braucht nicht cross-kompilieren, weil die Programme (bzw Libaries), die mit mono-develop (oder z.B. Delphi-Prism) erzeugt werden, CIL-Programme sind (in Microsoft-speak heißt das ".NET") und - wenn man es richtig macht - laufen die auf allen CPU und OS-Plattformen auf denen eine Framework (also z.B. Microsoft .NET, Mono unter Windows oder Mono unter Linux) installiert ist. Das ist ja der (technische) Sinn hinter CIL. Genau wie Java oder Python.

-Michael

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von Maik81ftl »

mschnell hat geschrieben:
Maik81ftl hat geschrieben:wäre suba, wenn mono auch sowas wie crosscompiling kann.

Wie gesagt: Mono braucht nicht cross-kompilieren, weil die Programme (bzw Libaries), die mit mono-develop (oder z.B. Delphi-Prism) erzeugt werden, CIL-Programme sind (in Microsoft-speak heißt das ".NET") und - wenn man es richtig macht - laufen die auf allen CPU und OS-Plattformen auf denen eine Framework (also z.B. Microsoft .NET, Mono unter Windows oder Mono unter Linux) installiert ist. Das ist ja der (technische) Sinn hinter CIL. Genau wie Java oder Python.

-Michael


Michael. du verkennst glaube ich die lage.

ich habe eine .so für Ubuntu via Monodevelop erstellt, will diese aber auch Für windows als dll bereitstellen.
Eclipticon hat geschrieben:
Maik81ftl hat geschrieben:VMware will a net laufen.


Code: Alles auswählen

sudo apt-get install virtualbox-ose


scheint auch net das gelbe zu sein oder bin ich dafür einfach nur zu doof :?: :?: :?: 2tens :) Hab in den Anwendungen das Register Sonstiges, da findet sich auch VMware User
Agent. wenn ich drauf klicke, passiert garnix, bin der meinung, das sich da mind ein Fenster öffnen sollte.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von Eclipticon »

Also ich arbeite seit LANGEM erfolgreich mit VirtualBox ... meine Maschine laeuft unter Ubuntu und alles, was ich an Programmentwicklung mache auf einer virtuellen Maschine. Also ist es das gelbe vom Ei ...

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von mschnell »

Maik81ftl hat geschrieben:ich habe eine .so für Ubuntu via Monodevelop erstellt, will diese aber auch Für windows als dll bereitstellen.

Ich habe mit Monodevelop noch nicht gearbeitet, aber ich war der Ansicht dass man damit Programme für das Mono (also .NET) Framework macht, und die sind (wie gesagt und wenn man sie so einrichtet dass keine System-Spezifischen Sachen verwendet werden) Auf allen CIL- (also z.B. Mono und .NET) Frameworks unabhängig von Betriebssystem und Prozessor unverändert (ohne Neukompilieren) lauffähig.

Ich habe noch nicht davon gehört, dass MonoDevelop native-Code Binaries erzeugen kann. Ich will aber natürlich auch nicht das Gegenteil behaupten.

OK. Ich weiß, dass man CIL-Binaries mit einem (sehr selten gebrauchten) MONO-Tool in native Binaries übersetzen kann (die dann aber immer noch das Framework als Runtime Bibliothek brauchen). Die sind dann nicht mehr Architektur und möglicherweise auch weniger OS-unabhängig. Vorteil: der Lade-Vorgang ist drastisch schneller, weil nicht mehr vom Framework beim Laden Programmteile Architektur-spezifisch übersetzt werden müssen. Ob irgendwo dokumentiert ist, wie man solche Dinger dann als DLL / so von einem native-Code Programm aufrufen kann weiß ich nicht, halte ich aber für unwahrscheinlich.

Wenn Du Native-Code willst, warum willst Du dann MoonoDevelop verwenden ? Dann ist doch eine Eclipse-basierende IDE vermutlich besser geeignet (weil flexibler).

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von mschnell »

Eclipticon hat geschrieben:Also ich arbeite seit LANGEM erfolgreich mit VirtualBox ... meine Maschine läuft unter Ubuntu und alles, was ich an Programmentwicklung mache auf einer virtuellen Maschine. Also ist es das gelbe vom Ei ...

Ich habe auch schon Virtual Box verwendet um Linux auf Windows und Windows auf Linux laufen zu lassen. Klappt in beiden Fällen hervorragend. Die neueren Versionen sind auch schön flott (wenn man eine entsprechende CPU hat), weil sie die Hardware-Virtualisierung der CPU verwenden. Außerdem kann man sie so einrichten, dass z.B. ein Windows-Programm in einem eigenen Fenster auf der Linux-Oberfläche läuft, ohne dass man den Rest von Windows überhaupt sieht. Klasse !

Allerdings sollte man mindestens einen zwei-Kern Prozessor und 2 GB RAM haben, wenn es Spaß machen soll.

-Michael

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von Maik81ftl »

mschnell hat geschrieben:
Maik81ftl hat geschrieben:ich habe eine .so für Ubuntu via Monodevelop erstellt, will diese aber auch Für windows als dll bereitstellen.

Ich habe mit Monodevelop noch nicht gearbeitet, aber ich war der Ansicht dass man damit Programme für das Mono (also .NET) Framework macht, und die sind (wie gesagt und wenn man sie so einrichtet dass keine System-Spezifischen Sachen verwendet werden) Auf allen CIL- (also z.B. Mono und .NET) Frameworks unabhängig von Betriebssystem und Prozessor unverändert (ohne Neukompilieren) lauffähig.

Ich habe noch nicht davon gehört, dass MonoDevelop native-Code Binaries erzeugen kann. Ich will aber natürlich auch nicht das Gegenteil behaupten.

OK. Ich weiß, dass man CIL-Binaries mit einem (sehr selten gebrauchten) MONO-Tool in native Binaries übersetzen kann (die dann aber immer noch das Framework als Runtime Bibliothek brauchen). Die sind dann nicht mehr Architektur und möglicherweise auch weniger OS-unabhängig. Vorteil: der Lade-Vorgang ist drastisch schneller, weil nicht mehr vom Framework beim Laden Programmteile Architektur-spezifisch übersetzt werden müssen. Ob irgendwo dokumentiert ist, wie man solche Dinger dann als DLL / so von einem native-Code Programm aufrufen kann weiß ich nicht, halte ich aber für unwahrscheinlich.

Wenn Du Native-Code willst, warum willst Du dann MoonoDevelop verwenden ? Dann ist doch eine Eclipse-basierende IDE vermutlich besser geeignet (weil flexibler).

-Michael


nun warum Monodevelop? könnte auch eine .so- Direkt in der Konsole erzeugen, aber da kann i mich leider a net so besonders. aus. die .c und .h wurden beide in gEdit geschrieben und denne nur bei Monodevelop ich das Projekt eingefühgt.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von mschnell »

Maik81ftl hat geschrieben:könnte auch eine .so- Direkt in der Konsole erzeugen...

Was soll das denn bedeuten ? Meinst Du mit einem Command-Line Compiler (z.B. gcc)
Maik81ftl hat geschrieben:aber da kann i mich leider a net so besonders. aus. die .c und .h wurden beide in gEdit geschrieben und denne nur bei Monodevelop ich das Projekt eingefühgt.

Als Niederrheiner verstehe ich leider nur die Hälfte Deines Dialektes :( .
gedit kenne ich nicht. Mit welchem Programm eine Textdatei erzeugt worden ist, ist aber egal. Du kannst sie immer mit jedem anderen Tool weiter-bearbeiten.
Wie gesagt, die "normale" IDE für c-Etwicklung unter Linux ist Eclipse. soweit ich weiß, arbeiten auch viele Linux-Entwickler inzwischen nicht mehr direkt mit gcc, sondern verwenden die auf Eclipse basierte gcc-IDE.

Jedenfalls scheinst Du nicht vorzuhaben, ein CIL-Projekt zu machen, wie ich das befürchtet hatte. Mit native c gibt es natürlich ganz gute Chancen, dass Du eine DLL / so hinbekommst, die Du mit einem Lazarus-Programm verwenden kannst.

Gib mal bei Google Eclipse und gcc ein. da findest Du bestimmt leicht eine installierbare IDE sowohl für PC-Linux als auch für Windows.

-Michael

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von Maik81ftl »

mschnell hat geschrieben:Gib mal bei Google Eclipse und gcc ein. da findest Du bestimmt leicht eine installierbare IDE sowohl für PC-Linux als auch für Windows.

-Michael


Windows ist genau die Plattform, wo ich max. testen will. nicht schreiben. nur wissen, ob's da läuft. mal Eclipse installiert, is ja aba Ne total gewöhnungsbedürftige SKD oberfläche. und wie ich auch gesehen habe, eher für Java gedacht.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von carli »

mschnell hat geschrieben:Wie gesagt, die "normale" IDE für c-Etwicklung unter Linux ist Eclipse.


näääh - das verwechselst du mit vi

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dll in Monodevelop unter Linux erzeugen.

Beitrag von mschnell »

carli hat geschrieben:näääh - das verwechselst du mit vi
Das war einmal :D :D :D
Wer's kann ist damit super schnell. Aber sie sterben aus. Die jüngeren wollen eine IDE.
Außerdem ist vi natürlich keine IDE, aber wem sage ich das.... :D
-Michael

Antworten