Benutzt irgendwer dynamische Libs?



  • Also so, wie ich den Eingangspost interpretiere, redet der Threadstarter eher vom linken, und nicht vom dynamischen Nachladen während der Laufzeit.

    Ich denk mal, wenn ich eine so/dll beim kompilieren linke, dann wird, wenn die executable ausgeführt wird, auch gleichzeitig die gelinkte so/dll mitgeladen.

    summa summarum müsste es eigentlich egal sein, ob ich Codeteile als so/dll kompiliere und dann dynamisch dazulinke, oder den Code gleich mit in die executable miteinkompiliere.



  • Was verstehst du den unter dynamisch linken und dynamisch nachladen?
    Dynamisch linken bedeutet ja du erzeugst dein Programm (.exe etc) und die Bibliothek (.DLL oder .so) und dann wenn der Benutzer das Programm startet wird die Bibliothek geladen... Daher dynamisch linken und nachladen sind das selbe 😉
    MfG



  • derFer schrieb:

    Was verstehst du den unter dynamisch linken und dynamisch nachladen?
    Dynamisch linken bedeutet ja du erzeugst dein Programm (.exe etc) und die Bibliothek (.DLL oder .so) und dann wenn der Benutzer das Programm startet wird die Bibliothek geladen... Daher dynamisch linken und nachladen sind das selbe 😉
    MfG

    unter dynamisch nachladen, dass ich irgendwelche funktionen aus windows.h verwende, um die lib während der laufzeit zu laden.



  • shutdown -h now schrieb:

    ffmpeg beipielsweise unter windows eine einzige executable, ca. 20MB groß.

    den anwender kümmert es nicht.

    Schön, wenn man eine beschränkte Sicht auf die Dinge hat 🙂
    Ich entwickle Software, die auf DVD ausgeliefert werden MUSS. Und da ist neben meiner Software noch ein Riesen Batzen an anderer Software drauf. Wenn jeder denken würde wie du, dann würde die DVD wohl überlaufen...
    Vielleicht einfach mal dran denken, dass Softwareentwicklung nicht nur für das Kiddie daheim ist, dass seinen neuesten kopierten Film schauen will.



  • KuhTee schrieb:

    shutdown -h now schrieb:

    ffmpeg beipielsweise unter windows eine einzige executable, ca. 20MB groß.

    den anwender kümmert es nicht.

    Schön, wenn man eine beschränkte Sicht auf die Dinge hat 🙂
    Ich entwickle Software, die auf DVD ausgeliefert werden MUSS. Und da ist neben meiner Software noch ein Riesen Batzen an anderer Software drauf. Wenn jeder denken würde wie du, dann würde die DVD wohl überlaufen...
    Vielleicht einfach mal dran denken, dass Softwareentwicklung nicht nur für das Kiddie daheim ist, dass seinen neuesten kopierten Film schauen will.

    Ich kann deine Argumente nicht ganz nachvollziehen.
    Wenn du über das "CD-Maximum" von ca. 650MB kommst, nimmt man halt einfach eine DVD mit 4,7GB oder mehr.



  • Courier schrieb:

    summa summarum müsste es eigentlich egal sein, ob ich Codeteile als so/dll kompiliere und dann dynamisch dazulinke, oder den Code gleich mit in die executable miteinkompiliere.

    Nö, ist nicht egal.
    Wenn man von einer EXE ausgeht, die 1x "frisch" nach dem Neustart des OS gestartet wird, und sich keine DLLs mit anderen EXEn teilen kann, dann gewinnt immer der Monolith.

    Wenn man dagegen mehrere EXEn hat von denen auch mehrere gestartet werden, u.U. sogar mehrfach, dann kann es sein dass die DLL Variante gewinnt.



  • hustbaer schrieb:

    Courier schrieb:

    summa summarum müsste es eigentlich egal sein, ob ich Codeteile als so/dll kompiliere und dann dynamisch dazulinke, oder den Code gleich mit in die executable miteinkompiliere.

    Nö, ist nicht egal.
    Wenn man von einer EXE ausgeht, die 1x "frisch" nach dem Neustart des OS gestartet wird, und sich keine DLLs mit anderen EXEn teilen kann, dann gewinnt immer der Monolith.

    Wenn man dagegen mehrere EXEn hat von denen auch mehrere gestartet werden, u.U. sogar mehrfach, dann kann es sein dass die DLL Variante gewinnt.

    ja, du gehst aber immer von "allgemeingebräuchlichen" DLLs aus, also DLLs, die mehrere Programme brauchen und benutzen. Da stimmt das, was du sagt, völlig.

    Aber wenn ich eine Anwendung habe, die neben der exe noch 5 DLLs mit nichtssagendem Namen hat ("GameEngine.dll", "ScriptingEngine.dll", "audio.dll" usw.), dann bringt das eben keinen Vorteil.

    Wenn ich die exe starte, läd das Betriebssystem die 5 Dlls mit in den Speicher.
    --> Wenn ich nur eine exe habe, läd das Betriebssystem diese exe in den Speicher.

    Verstehst du nicht, wie ich das meine? Wenn ich eine exe mit "einmal-gebrauchten-DLLs" habe, das ganze Pack 20 MB groß ist, dann kann ich das ganze auch gleich in eine exe kompilieren, die dann im Endeffekt 20 MB groß ist, aber keine unnütze DLLs mitbringt.



  • Das stimmt auch, aber gerade bei Spielen (Engine) ist es so das die Lizenz es vorschreibt es dynamisch zu linken...
    Das selbe gilt wie oft genannt vor allem auch für Libs die unter der LGPL stehen und daher auch dynamisch gelinkt werden müssen -> einzelne .dll/.so Datei...
    MfG



  • Bei der GPL linkt man dann aber lieber wieder statisch.



  • derFer schrieb:

    Das stimmt auch, aber gerade bei Spielen (Engine) ist es so das die Lizenz es vorschreibt es dynamisch zu linken...
    Das selbe gilt wie oft genannt vor allem auch für Libs die unter der LGPL stehen und daher auch dynamisch gelinkt werden müssen -> einzelne .dll/.so Datei...
    MfG

    Ich rede hier aber von kommerziellen Spielen, die du im Laden kaufen musst.

    Da steht garnix unter der LGPL, da gilt die bei der Installation vereinbarte EULA.

    Und da darfst du dann mit großer Wahrscheinlichkeit die DLL nicht weiterverwenden (das ist ja aber wie gesagt abhängig von der EULA). Ich bin kein Jurist.

    So meine ich das.

    Es hat bei solchen Spielen im Grunde keinen weiteren Nutzen, Code in DLLs zu kompilieren und zu linken. Da kannst du auch alles in eine exe kompilieren. Die ist zwar dann etwas größer, aber warum nicht? An der Ausführungsgeschwindigkeit sollte sich dabei nichts ändern.



  • cooky451 schrieb:

    Bei der GPL linkt man dann aber lieber wieder statisch.

    Kann sein.

    Man muss sich jedoch im klaren sein, dass eine GPL für Libs (egal, ob statisch oder dynamisch) eher nachteilig sind, weil so keiner deine Lib führ ein "GPL-Fremdes" Produkt verwenden kann.

    Wenn ich eine Lib programmiere und diese im Internet veröffentliche, dann will ich auch, dass das kommerzielle Unternehmen nutzen können. In diesem Fall wäre eine GPL sehr hinderlich. Es gibt aber noch andere, unbekanntere Lizenzen, die in diesem Fall sehr gut geeignet wären.

    Zu LGPL:
    Soweit ich weiß, sollten vornehmlich dynamische Libs (also DLL oder so) unter die LGPL gestellt werden.



  • EULA, nicht (L)GPL --- 2 schrieb:

    Wenn ich eine Lib programmiere und diese im Internet veröffentliche, dann will ich auch, dass das kommerzielle Unternehmen nutzen können. In diesem Fall wäre eine GPL sehr hinderlich.

    Deswegen ja die LGPL im Gegensatz zur GPL besagt die LGPL das bei einem linken gegen die lib die Software nicht automatisch auch unter der LGPL stehen muss, jedoch sobald du etwas aus der Lib entnimmst und benutzt musst du das Programm unter der GPL veröffentlichen.
    Daher: solange du die Lib in ruhe lässt und nur dynamisch gegen sie linkst kannst du auch deine Software als closed source veröffentlichen...

    Im übrigen, ich persönlich hab was gegen die vielen Restriktionen der GPL und vor allem ist die viel zu lang (liest sich doch kein Schwein durch 😉 ) daher benutze ich persönlich für meine Programme wesentlich häufiger BSD/MIT ähnliche Lizenzen oder für Bibliotheken auch wirklich die LGPL 🙂 Unterschiede siehe hier 😃

    MfG



  • [quote="derFer"]Deswegen ja die LGPL im Gegensatz zur GPL besagt die LGPL das bei einem linken gegen die lib die Software nicht automatisch auch unter der LGPL stehen muss, jedoch sobald du etwas aus der Lib entnimmst und benutzt musst du das Programm unter der GPL veröffentlichen.
    Daher: solange du die Lib in ruhe lässt und nur dynamisch gegen sie linkst kannst du auch deine Software als closed source veröffentlichen...

    Ok, aber statisch? Anscheinend deckt die LGPL wirklich nur dynamische Libs ab.

    Im übrigen, ich persönlich hab was gegen die vielen Restriktionen der GPL und vor allem ist die viel zu lang (liest sich doch kein Schwein durch 😉 ) daher benutze ich persönlich für meine Programme wesentlich häufiger BSD/MIT ähnliche Lizenzen oder für Bibliotheken auch wirklich die LGPL 🙂

    MfG

    Macht Sinn. Die GPL ist viel zu "free-software-fundamentalistisch".

    Es gibt mittlerweile besseres.

    Das ist Übrigens mit zweiter Beitrag, mein anderer Beitrag ist auf der letzten Seite, und wird deswegen wahrscheinlich überlesen werden:

    [quote="EULA, nicht (L)GPL"]

    derFer schrieb:

    Das stimmt auch, aber gerade bei Spielen (Engine) ist es so das die Lizenz es vorschreibt es dynamisch zu linken...
    Das selbe gilt wie oft genannt vor allem auch für Libs die unter der LGPL stehen und daher auch dynamisch gelinkt werden müssen -> einzelne .dll/.so Datei...
    MfG

    Ich rede hier aber von kommerziellen Spielen, die du im Laden kaufen musst.

    Da steht garnix unter der LGPL, da gilt die bei der Installation vereinbarte EULA.

    Und da darfst du dann mit großer Wahrscheinlichkeit die DLL nicht weiterverwenden (das ist ja aber wie gesagt abhängig von der EULA). Ich bin kein Jurist.

    So meine ich das.

    Es hat bei solchen Spielen im Grunde keinen weiteren Nutzen, Code in DLLs zu kompilieren und zu linken. Da kannst du auch alles in eine exe kompilieren. Die ist zwar dann etwas größer, aber warum nicht? An der Ausführungsgeschwindigkeit sollte sich dabei nichts ändern.



  • Nur ein kleiner Einschub:
    Ja die verwenden alle immer eine EULA, aber wollt ihr was wissen?
    Die gilt nicht! (Zumindest nicht in DE)
    Denn die Bedingungen, etwaige Lizenzvereinbarungen etc., müssen vor dem Kauf dem Benutzer bekannt sein und können nicht nachträglich abgeschlossen werden.

    Quelle
    Keine Haftung für meine Aussage, soll kein Freifahrtschein sein 😉



  • Ich schreib meine eigene LICENSE.txt, wo nicht so viel BS drinsteht.



  • Courier schrieb:

    KuhTee schrieb:

    shutdown -h now schrieb:

    ffmpeg beipielsweise unter windows eine einzige executable, ca. 20MB groß.

    den anwender kümmert es nicht.

    Schön, wenn man eine beschränkte Sicht auf die Dinge hat 🙂
    Ich entwickle Software, die auf DVD ausgeliefert werden MUSS. Und da ist neben meiner Software noch ein Riesen Batzen an anderer Software drauf. Wenn jeder denken würde wie du, dann würde die DVD wohl überlaufen...
    Vielleicht einfach mal dran denken, dass Softwareentwicklung nicht nur für das Kiddie daheim ist, dass seinen neuesten kopierten Film schauen will.

    Ich kann deine Argumente nicht ganz nachvollziehen.
    Wenn du über das "CD-Maximum" von ca. 650MB kommst, nimmt man halt einfach eine DVD mit 4,7GB oder mehr.

    Die CD ist im Presswerk günstiger als die DVD.

    Die DVD kostet geraten 1 Cent mehr, bei 100k Stückzahlen macht das schon was aus. Da muss also gespart werden.



  • derFer schrieb:

    Nur ein kleiner Einschub:
    Ja die verwenden alle immer eine EULA, aber wollt ihr was wissen?
    Die gilt nicht! (Zumindest nicht in DE)
    Denn die Bedingungen, etwaige Lizenzvereinbarungen etc., müssen vor dem Kauf dem Benutzer bekannt sein und können nicht nachträglich abgeschlossen werden.

    Quelle
    Keine Haftung für meine Aussage, soll kein Freifahrtschein sein 😉

    Da du Software heutzutage in der Regel als Download kaufst und dort die Lizenz VOR dem Kauf dabei steht, gelten die EULAs alle!

    Das ist übrigens einer der weiteren Haken von Steam und Co.



  • Kellerautomat schrieb:

    Ich schreib meine eigene LICENSE.txt, wo nicht so viel BS drinsteht.

    Also ein gefundenes Fressen für Juristen!



  • LOL^4 schrieb:

    Kellerautomat schrieb:

    Ich schreib meine eigene LICENSE.txt, wo nicht so viel BS drinsteht.

    Also ein gefundenes Fressen für Juristen!

    Ich habe als Urheber meiner Software vollstaendige Rechte und kann bestimmen, was damit erlaubt ist. Dazu brauch ich keine Lizenz von irgendwo, die 100 Seiten lang und gecapst ist.


  • Administrator

    Kellerautomat schrieb:

    LOL^4 schrieb:

    Kellerautomat schrieb:

    Ich schreib meine eigene LICENSE.txt, wo nicht so viel BS drinsteht.

    Also ein gefundenes Fressen für Juristen!

    Ich habe als Urheber meiner Software vollstaendige Rechte und kann bestimmen, was damit erlaubt ist. Dazu brauch ich keine Lizenz von irgendwo, die 100 Seiten lang und gecapst ist.

    Die Frage ist aber, ob du in deiner eigenen LICENSE.txt die richtigen Rechte weitergegeben hast oder ob sie Lücken aufweist, welche von einem findigen Anwalt missbraucht werden können?
    Auch machst du es dem Benutzer deiner Software unnötig schwer, wenn du erneut neue Lizenzen erfindest. Ich verliere jetzt schon oft den Überblick über all die möglichen Lizenzen. Da braucht es wirklich nicht noch weitere.

    Diese Lizenzen sind ja nicht 100 Seiten lang, weil die Leute Spass daran haben 100 Seiten lange Lizenzen zu schreiben. Da geht es um juristisch korrekte Formulierungen, welche vor einem Gericht standhalten können. Ohne jemand mit Erfahrung im Schreiben von solchen Texten, ist man ziemlich aufgeschmissen und kann es grundsätzlich vergessen. Eine "normale" Sprache hält vor Gericht nicht stand, da sie meistens nicht genau genug ist.

    Grüssli


Anmelden zum Antworten