GPL: Lizenz für Programme die mit GCC erstellt wurden

Rossibaer

Lieutenant
Registriert
Apr. 2007
Beiträge
754
Hallo zusammen,

ich bin momentan etwas überfordert von den vielen Rahmenbedingungen der GPLv2. Meine Frage wäre, wenn ich ein unter GPLv2 gestelltes Softwarepaket verwende um eigenen Content zu generieren, z.B. eigenen C/C++ Code mit dem GCC kompiliere, kann ich dann das Produkt, sprich das Programm als Closed Source unter Missachtung der GPL, d.h. mit meiner eigenen Lizenz verteilen? Mir gehts nicht darum, massig Kohle zu scheffeln, sondern vielmehr nicht jedem den Code liefern zu müssen, sondern nur meinen mit GCC erstellten BLOB :)

Über Google fand ich bisher folgende Seite:
http://www.it-rechtsinfo.de/themenb...nutzung-von-open-source-software.html?type=98

Im übrigen habe ich auch die FAQ von GNU.org durchforstet und bin nun genauso schlau wie vorher, da ein Compiler sicher auch eigenen Code mit einbindet, einmal ein Include unbedacht gewählt und schon habe ich diese virale GNU GPL mit an Bord.

Das läßt mich etwas rätseln, ob ich nun kann oder nicht kann. Ich bin nicht an einer rechtsverbindlichen Aussage von euch interessiert, sondern vielmehr an paar nützlichen Links zur eigenen weiteren Recherche. Wer also da was hat, wäre ich sehr dankbar.

Ersteinmal vielen Dank dafür, dass du dir das hier durchgelesen hast.

Grüße
Rossibaer

PS: Wenn es nicht gehen sollte, muss ich wohl doch auf einen anderen Compiler ausweichen, was mir vielleicht etwas stinken würde.
 
Nach dem ich nun deinen Link verfolgte und auch selber weiter recherchierte, komme ich nun zu folgendem Schluß:
Letzten Endes werde ich mich doch vom Gedanken verabschieden den GCC für eigene Programme zu nutzen da ich - auch wenn es die Aussnahmen in der entsprechenden GPL gibt - nicht sicher sein kann, dass es eben doch gegen die GPL verstößt. Der Link führte mich ein Stück weiter zu http://www.gnu.org/licenses/gcc-exception-faq.html in der zwar das Ganze detailierter beschrieben steht. Da sehe ich auch schon wieder für mich zutreffende mögliche Probleme gegen die GPL bewußt oder unbewußt zu verstoßen. Da ich aber das geistige Eigentum und die Rechte derer, sowie die GPL und deren Sinn als solches respektiere, werde ich wohl doch Alternativen suchen. Am Ende bleibt für mich halt der fade Beigeschmack einmal GPL immer GPL. Was für GPL gut, aber nicht zu meiner persönlichen Meinung über "Freie Software" kompatibel ist. (Liebäugel da schon eher mit den BSD Lizenzen...)

Dennoch herzlichen Dank nochmal.

Grüße
Rossibaer
 
Kram den du mit GCC kompilierst, kannst du unter jede Lizenz stellen, die du willst. Auch OpenBSD benutzt
beispielsweise GCC und das steht nicht unter GPL und ist auch völlig ok so. So lange du keine Bibliothek
einbindest, die unter der GPL ist, kannst du da machen, was du willst.
 
der GCC-Compiler - also der Quellcode davon - steht unter der GPL, nicht die damit erstellten Kompilate ;)
 
Prinzipiell kann ich laut GPL eigene Programme mit dem GCC kompilieren und diese BLOBs dann unter meiner eigenen Lizenz publizieren. Soweit ok. Stimme auch damit überein das OpenBSD den GCC verwendet und seine eigene Lizenz hat. Jedoch ist der Fallstrick, dass das ganze nur solange möglich ist, wenn ich keine Libs mit reinkompiliere, die die Ausnahmeregelung entsprechend nicht einräumen. Ausversehen die falsche Lib gelinkt und schon ists vorbei mit der Freiheit. Ob mir das bewußt oder unbewußt passiert, in beiden Fällen wäre ich dann zur GPL verpflichtet. Hinzu kommt das ich momentan diverse Libs aus der Windowswelt linke die meines wissens nach nicht unter GPL stehen. Ebenso verwendet die Suite die ich verwende (MingW) intern eigene Libs, die sich mit schöner Zuverlässigkeit in jedes Compilat einschleusen. Korrigiert mich wenn ich falsch liege, aber diese Libs sind nicht unter GPL. Desweiteren greift diese Ausnahmeregelung nur, wenn es sich um einen "eligible compilation process" handelt. Sobald ich in den Kompilierprozess eingreife, laufe ich Gefahr eben diese Sicherheit zu verlieren. Auch wenn dies wohl eher theoretischer Natur ist, so kann ich mich nicht damit anfreunden. Insgesamt ist es ein sehr heikles Thema, da ich nicht nur eben mal schnell etwas zusammen klitsche, sondern nun aufwendig recherchieren muss, was ich darf und was nicht. Und die GPL in ihrem Wortlaut würde ich eben mal nicht als einfach zu lesende Kurzgeschichte auf die leichte Schulter nehmen. Noch dazu geschrieben in einer Sprache, die ich im wesentlichen zwar lesen, schreiben und verstehen kann, aber dann doch die kleinen semantischen Feinheiten schnell mal übersehe, da es nicht meine Muttersprache ist. Aber sei es, wie es sei. Ich habe Respekt vor den Werken anderer und möchte dahingehend auch mein bestes Geben und nicht wahllos alles zusammenklauben und dann hoffen, dass es keiner rausfindet.

Grüße Rossibaer :)

PS: asdfman, Danke für den Link zu SICP (deine Signatur). Habe mal darin gestöbert und recht interessantes gefunden. Bitte werf mal noch weitere solche Perlen in deine Signatur...
 
Rossibaer schrieb:
Jedoch ist der Fallstrick, dass das ganze nur solange möglich ist, wenn ich keine Libs mit reinkompiliere, die die Ausnahmeregelung entsprechend nicht einräumen. Ausversehen die falsche Lib gelinkt und schon ists vorbei mit der Freiheit.

Neija sagen wir so, wenn du reines C schreibst, ohne extra Bibiliotheken, kannst du es unter eine Lizenz stellen, wie du willst.
Sobald du natürlich aber Bibiliotheken von anderen einbindest, musst du dich natürlich auch an deren Auflagen halten.
Immerhin musste du Quellen in schriftlichen Ausarbeitungen auch nennen, das ist nichts anderes, deine Arbeit basiert auf der Arbeit anderer.

Und wenn du Library X einbindest, musst du dich eben nach der Lizenz X richten, dass Library X wieder Y und Z nutzt, kann dir eigentlich relativ egal sein, da Library X schon sichergestellt hat, dass ihre Lizenz zu der von Y und Z passt.

Also ganz einfach: Kompilate kannst du unter eine Lizenz stellen wie die gefällt, machst du deine Arbeit von anderen abhängig, musst du dich eben nach diesen richten, ist eigentlich selbstverständlich.
 
Das ist mir durchaus klar und soweit auch nicht im Widerspruch zu dem was ich da geschrieben habe.

Nur habe ich jetzt mal mit einem Tool namens DependencyWalker geschaut, was tatsächlich an Bibliotheken in meinem Programm gelinkt wurde. Und siehe da, ich kann bei MingW Einstellungen vornehmen, wie ich will, es linkt mir in jedem Fall eine MingW spezifische lib mit rein, ob statisch oder dynamisch spielt dabei für mich und lizenzrechtlich keine Rolle. Ich hatte nur bestimmte Libs gelinkt, deren Verwendung auch entsprechend ok war und diese Drecks-Lib linkte ich eben nicht. Sicher hat das nichts mit dem GCC zu tun, da MinGW sich nur GCC bedient, aber seine eigenen Tricks und Kniffe anwendet um einen Windows "BLOB" zu erzeugen. Das Interessante war auch ein einfaches "Hello World" reicht schon für dieses Verhalten aus. So wie ich die Docs von MingW verstanden habe, werde ich es wahrscheinlich nicht verhindern können... :(

Und dann kommt noch bei der GPL ins Spiel, dass sobald Inhalte eines Bestandteils des GPL lizensierten Programms mit in der Ausgabe drin sind, dann ist automatisch die Ausgabe unter GPL zu stellen. Es gibt lediglich die Ausnahmeregelung u.a. für die GCC und wie ich bereits vorher schrieb, ist diese nicht in jedem Fall anwendbar. Also, wie komme ich nun aus der Nummer raus? Aus meiner Sicht nur, wenn ich eine Entwicklungsumgebung nutze, die mir auch tatsächlich nur das linkt, was ich ihr sage, dass sie das linken soll oder ich würde mal den Linkprozess direkt über die Konsole steuern, anstatt eine bunte Klick&Klack IDE magisch werkeln zu lassen. Wird wohl eh das Beste sein. Entwickeln kann ich dann immer noch mit der IDE, aber fürs Release würde ich dann eben nicht über die IDE gehen können.

Aber genau wegen dieser für mich unbestimmten Situation, konnte ich nun etwas Zeit investieren und mal intensiver nachlesen. Dabei musste ich schnell feststellen, das ich bis dato faktisch nichts über GPL wußte. Und alles was ich glaubte zu wissen nur auf hören/sagen und diversen Scheißhausparolen beruhte. :D Insofern ist es für mich auch gut, da ich zunehmend beruflich mit der Ansteuerung und Nutzung von GPL Software zu tun habe(n werde).

Für den den es interessiert: Ich verwendete MingW + Code::Blocks. Meines Wissens nach sind beide GPLed. Jedoch hat es mich nicht wirklich vom Hocker gerissen. Wahrscheinlich weil ich inkl. heute ganze 7 Tage damit gespielt habe. ;) Aber zur Verteidigung muss ich sagen, dass diese Combi auch ein paar sehr schöne Sachen hat, die ich leider in z.B. VS jetzt sicher stark vermissen werde oder umständlich suche/konfiguriere.

Alles in allem bedanke ich mich für eure Anteilnahme und die Antworten.

Bis zum nächsten Mal
Rossibaer
 
Zuletzt bearbeitet:
Ehrlich gesagt, verstehe ich gerade nicht, was du dich wunderst.
Du verwendest eine GPL lib und wunderst dich, dass diese in deinem Programm nachher auftaucht und du somit an die Regelungen der GPL gebunden bist?

Und wenn du eine IDE verwendest, die dir reinkompiliert, was sie will, kann ebenfalls wieder weder gcc noch minge etwas, kannst dir ja mal make-files ansehen ;)

Achso, und nicht alle Teile von MinGW stehen unter der GPL ;)
 
Mir gehts darum das MingW eine Lib reinkompiliert, die ich weder aktiv im Code verwende noch angegeben habe, dass sie mit gelinkt werden soll. Am einfachsten kannst du ja ein beliebiges kleines progrämmchen zusammen stoppeln, wo keinerlei Funktionen, Objekte o.ä. aus einer Lib verwendet werden. Kompiliere es und du wirst sehen, dass diese lib trotzdem drin ist. Beeinflußen wirst du es wohl kaum können, zumindest habe ich mir dabei einen abgebrochen und die verschiedensten Einstellungsmöglichkeiten von CodeBlocks durchgetestet. Denke das auch die Alternative nicht viel bringen wird, da das bei der Suite so laut Doku ist. Alles was ich im Web darüber fand, war, dass das Ding immer mitkommt. Tipps waren sehr dürftig, am Ende sollten nur 2 Optionen darüber entscheiden, aber beide hatten nicht funktioniert. In keiner Kombination.

ABER das ist mittlerweile nicht mehr der eigentliche Kern des Threads. Am Anfang wollte ich nur ein paar Links, wo ich genauer nachlesen kann, was es nun genau mit GPL und GCC und der Lizensierung des Ouputs auf sich hat. Mittlerweile bin ich viel schlauer und kenne jetzt die Ausnahmeregelung für GCC sowie die Bedingungen. Das war das, was ich zuerst überhaupt nicht kannte und auch beim Lesen der GPL entweder übersehen oder nicht gefunden hatte. Dementsprechend haben mir die Links geholfen, deshalb noch mal danke.

Das Thema ist aus meiner Sicht erschöpfend genug besprochen. Unklarheiten sind für mich beseitigt, auch wenn ich vielleicht nicht für jeden so klar verständlich bei meinen eigenen Ausführungen bin, so denke ich den Kern dessen nun so einigermaßen zu kennen.
 
Alle Bibliotheken, die MinGW von sich aus in die Binary hineinlinkt (also ohne daß du es ihm explizit angibst), werden nicht unter der GPL stehen, sondern unter LGPL oder einer anderen Nicht-Copyleft-Lizenz. ("Copyleft" heißt der in der GPL enthaltene Zwang, abgeleitete Werke offenzulegen.)
 
Danke NullPointer, das ist mir mittlerweile auch bewusst, da ich nun fast jeden Satz auf der MinGW Website auswendig kenne. :) Habe da selber längere Zeit nach diversen Lösungen und den Lizenztexten von MinGW gesucht und gefunden.
 
alternativ kann man auch sein Programm von den Bibliotheken, die unter GPL stehen, trennen und bei der Installation dem Nutzer den Hinweis geben, wo er die noch fehlenden Komponenten finden kann. Bzw. sollte es sicherlich auch möglich sein, irgendeine Trennung zwischen den eigenen und den verwendeten Komponenten zu vollziehen, sodass man nur die Quellcodes der unter GPL stehenden Teile veröffentlichen muss.

Oder man stellt auch sein Projekt unter GPL und hat diese Probleme nicht!
 
CoolHandLuke: Ich habe mir auch schon gedacht das ich falls notwendig, dann einfach eine Wrapper-Bibliothek mache und die so vom Rest trenne, dass nur noch die Codes des Wrappers veröffentlicht werden müssen. Die würde ich dann unter GPL stellen und wieder beruhigt schlafen können. ;)

Klar könnte ich das gesamte Programm unter GPL stellen, aber ich sehe da nicht den Bedarf, da ich keinen nennenswerten Beitrag leisten würde. Alles was da zu finden wäre, wäre nur meine Interpretation der Logik in Form von Code aus unzähligen Büchern und Docs. Es würde eh kein super duper hightech nonplusultra Programm sein und als Mini-Gimmick in der Welt der riesigen Blobs von Windows leben. Desweiteren wären es die ersten junky Gehversuche beim Verlassen der .Net Umgebung hin zur C/C++ Programmierung. Also Hand aufs Herz, würdest du gerne diesen typischen Anfängerkram lesen wollen?! Da wärst du besser dran es eben selber "from the scratch" zu schreiben. Für einen erfahrenen Programmierer würde es wahrscheinlich wenige Stunden Arbeit sein. Da aber das Ganze noch in ferner, ferner Zukunft liegt, würde ich es jetzt einmal dabei belassen wollen. Das grobe Verständnis konnte ich mir mittels des Threads und der Links ins Netz erarbeiten. Für mich zählt jetzt nur das Lernen, Veröffentlichung und Lizensierung sind später wichtig, da ich jetzt nur einen groben Überblick haben wollte. Bis dahin wird noch viel Wasser in der Spree fließen ...

Wenn doch Open Source, dann liebäugel ich eher mit einer der BSD Lizenzen, weil ich persönlich nun mal gerne die Freiheit haben und auch diese Freiheit unterstützen möchte mit Code zu arbeiten ohne dass man dann an einen "10 Seiten" Lizenzvertrag gebunden ist. Klares Konzept ist mir lieber ala "Hier ist der Code den ich geschrieben habe. Mach was du willst damit. Ich gebe keine Garantie und hafte nicht für Schäden."

Viele Grüße
Rossibaer
 
Rossibaer schrieb:
CoolHandLuke: Ich habe mir auch schon gedacht das ich falls notwendig, dann einfach eine Wrapper-Bibliothek mache und die so vom Rest trenne, dass nur noch die Codes des Wrappers veröffentlicht werden müssen. Die würde ich dann unter GPL stellen und wieder beruhigt schlafen können. ;)

Das Problem dabei ist nur dass dein Wrapper mehr sein muss, als ein simpler Wrapper um die GPL-Bibiliothek, denn sonst ist auch der Wrapper wieder GPL und somit auch dein Programm.

Aus der GPL zu entkommen ist sehr schwer, i.R. ist es einfacher andere Bibiliotheken zu nutzen oder eben Programmteile zu bauen, die betriebsystemspzifisch sind:
SocketLinux und SocketWindows
 
Aber es ist egal und zur Zeit mehr ein theoretisches Problem, da weder Programm noch Bibliothek gemacht sind. ;) Im übrigen werde ich auf Dingen aufbauen, die einerseits Systemspezifisch und zum anderen auch unter meiner eigenen Lizenz ohne GPL laufen können. Ich nehme nur die Basistypen von C/C++ und binde dann schön, wie es sich für Windows gehört, dessen API ein um dann einen großen dicken BLOB zu kompilieren. Somit ist es eh egal. Wollte halt nur abklären, ob ich nicht vielleicht auch auf weitere Bibliotheken zurückgreifen kann. Da der Weg aber schön verriegelt und verrammelt ist, wars nur ein netter kleiner Ausflug in Richtung GPL, GCC, MinGW und CodeBlocks ...
 
Zurück
Oben