Forum: Compiler & IDEs Closed source mit GCC/avr-lib


von Andreas (Gast)


Lesenswert?

Hallo,

ist es mit der Kombination GCC/avr-libc möglich, kommerzielle
Anwendungen zu erstellen, deren sourcecode man nicht veröffentlichen
muss ? Mit der BSD Lizenz der avrlibc sollte es keine Probleme geben.
Sicher bin ich mir nicht bei der GPL.

Klingt jetzt vielleicht egoistisch, aber arbeite an einer Schaltung die
einen µC enthalten soll. Was damit passiert entscheide nicht ich, daher
will ich lieber auf Nummer sicher gehen.

Im Moment schwanke ich noch zwischen AVR's und PIC18FXX's. Ein
wesentlicher Vorteil der PIC18s ist halt mittlerweile der kostenlose
Compiler von microchip.

Es würde mich sehr freuen, wenn ihr mir helfen könntet !!

Gruß
Andreas

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

das haben wir hier schonmal diskutiert und sind zu dem Schluß gekommen
das das kein Problem ist. Der GCC steht zwar unter GPL aber du
verwendest ja nicht Sourcecode des GCC und baust damit deinen eigenen
Compiler sondern verwendest den Compiler nur als Übersetzer von
C-Source in ein Binary. Dann linkst du Teile der avrlibc dazu. Da diese
aber unter der BSD-Lizenz steht ist das kein Problem.

Mir sind auch einige (größere) Firmen bekannt die es auch nicht anderst
machen. Eagle wird wohl in der Linuxversion auch mit dem GCC gebaut.

Matthias

von Unbekannter (Gast)


Lesenswert?

Beim GCC kein Problem. In den speziellen Teilen des GCC gibt es genau
dafür eine Ausnahme-Klausel. Einfach mal die GCC-Doku lesen.

Wenn nun die AVR-LIBC unter einer BSD-Lizenz steht, kannst Du loslegen.

von Andreas (Gast)


Lesenswert?

Danke für die Antworten. Auf die Idee in der GCC-Doku zu schauen bin ich
gar nicht gekommen. Habe nur die GPL gelesen.

Ich habe noch nie für µC programme erstellt. Muss ich sonst nichts
dazulinken ? Reicht da einfach die avrlibc ?

Noch was anderes: Angenommen, ich verwende in meiner Anwendung z.B. zur
Ansteuerung eines Displays ein Library, die unter der GPL Lizenz steht.
Die Lib steht in den Dateien display.c und display.h

Wenn ich nun diese beiden Dateien in mein Programm einbinde und nicht
verändere, sondern nun die Funktionen aufrufe, was muss ich dann
manchen ? Wir dann alles automatisch GPL, oder muss ich dann z.B. nur
diese zwei Dateien offenlegen ? Ich finde die GPL lässt da sehr viel
Interpretationsspielraum. Nur falls das Produkt später wirklich
verkauft wird, sollten solche Sachen geklärt sein.

Andreas

von Andreas (Gast)


Lesenswert?

@Unbekannter
ich habe mir Doku angeschaut aber nix gefunden. Könntest Du vielleicht
einen link posten?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Wenn ich nun diese beiden Dateien in mein Programm einbinde und nicht
> verändere, sondern nun die Funktionen aufrufe, was muss ich dann
> manchen ? Wir dann alles automatisch GPL, ...

Ja, die GPL hat virulenten Charakter.

von Rolf Magnus (Gast)


Lesenswert?

Zu Fragen der GPL empfielt es sich, in die FAQ zu schauen.
Wegen Compilieren mit GCC:
http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF

Wegen der Verwendung von Files unter GPL in einem eigenen Programm:

http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem
http://www.gnu.org/licenses/gpl-faq.html#DistributingSourceIsInconvenient

von Andreas (Gast)


Lesenswert?

Reicht eigentlich der GCC und die avrlibc aus um vollständige Programme
zu erstellen oder braucht man noch irgendwelchen code oder libs die
unter der gpl stehen ?

Das verstehe ich nicht ganz:
http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem

So wie ich das sehe bezieht sich das nicht nur auf den Sorucecode,
sondern auch auf binarys.

Wenn ich nun ein Windowsprogramm schreibe (z.B. unter VC++) und dann
aus diesem Programm heraus avrdude aufrufe um z.B. Firmwareupdates zu
machen, ist das dann legal (Wenn ich zu meinem Programm avrdude incl.
sourcen mitliefere) ??

Letztendlich könnte ich doch genausogut eine Verknüpfung auf dem
Desktop anlegen und dann dem Benutzer sagen er soll draufklicken ... Wo
ist da die Grenze ? Suse hat doch früher auch im non-free "yast"
GPL-Programme aufgerufen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Reicht eigentlich der GCC und die avrlibc aus um vollständige
> Programme zu erstellen oder braucht man noch irgendwelchen code oder
> libs die unter der gpl stehen ?

(Btw., du plenkst.  Sieht hässlich aus.)

Das hängt davon ab, was du tun willst.  ,,Vollständige Programme''
kann man ja bereits mit einem Assembler ohne Zuhilfenahme einer
externen Bibliothek erstellen.

Die avr-libc hat einen (meiner Meinung nach) recht sauber
dokumentierten Funktionsumfang, den du zu deiner freien Verfügung
unter BSD-Lizenz hast.  Implizit benutzt du über den GCC noch
Funktionen aus der libgcc.a, die stehen zwar unter GPL aber unter
einer eingeschränkten, die dir die Weitergabe innerhalb eines
Kompilats ohne Einschränkungen gestattet.  (Nur, wenn du am Sourcecode
dieser Bibliothek selbst was änderst, bist du verpflichtet, diese
Änderungen allen verfügbar zu machen.)

Wenn du allerdings Procyon AVRlib benutzen willst, solltest du deren
Lizenzbestimmungen genau ansehen (die ist meines Wissens GPLed).
Gleiches trifft zu, wenn du beliebige Codestücke anderer Autoren
nehmen willst, erinnert sei an Peter Fleury's UART-Bibliothek o.ä.

> Wenn ich nun ein Windowsprogramm schreibe (z.B. unter VC++) und dann
> aus diesem Programm heraus avrdude aufrufe um z.B. Firmwareupdates
zu
> machen, ist das dann legal

Ja.  Es geht bei der GPL nur um eine `derived work'.  Zwar ist die
etwas schwammig formuliert, aber der Aufruf eines externen Programmes
lässt den Aufrufer wohl in keinem Falle zur `derived work' des
Aufgerufenen werden.  Bei der Benutzung von Bibliotheken wird's dann
wirklich glatteisig (dafür gibt's dann zusätzlich noch die LGPL),
ganz
besondere wenn man (abseits von AVR mal) shared libraries betrachtet.

von Andreas (Gast)


Lesenswert?

Hmm, danke für die Antworten. Irgendwie war ich von den AVRs zusammen
mit dem gcc voll überzeugt. Jetzt komme ich aber wegen dem ganzen GPL
kram ins grübeln.

Immerhin liefert microchip für seine PIC18 einen kostenlosen compiler,
der zumindest laut Doku so features wie UART schon drin hat.
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf

Irgendwie habe ich jetzt die Befürchtung, dass ich mti den AVRs anfange
und dann merke, dass mir ein paar Softwarefeatures fehlen. Zum
Nachprogrammieren wird wohl keine Zeit bleiben und fertige libs darf
man nicht nehmen, da die meistens unter der gpl stehen.

Am Wochenende werde ich mir mal die PICs näher anschauen und was es da
so für Tools gibt. Ich muss halt möglichst schnell, möglichst weit
kommen (Time to market :-) ). An codebeispielen mangelt es für den gcc
ja nicht, wenn man aber davon nichts benutzen darf, hat man auch nichts
davon. Privat wäre das ja kein Problem. Naja, ich hoffe dass ich morgen
abend schlauer bin...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Hmm, danke für die Antworten. Irgendwie war ich von den AVRs
> zusammen mit dem gcc voll überzeugt. Jetzt komme ich aber wegen dem
> ganzen GPL kram ins grübeln.

Musst du nicht wirklich.  Wie geschrieben: mit GCC und avr-libc hast
du an sich erstmal kein Problem.

> Irgendwie habe ich jetzt die Befürchtung, dass ich mti den AVRs
> anfange und dann merke, dass mir ein paar Softwarefeatures
> fehlen. Zum Nachprogrammieren wird wohl keine Zeit bleiben und
> fertige libs darf man nicht nehmen, da die meistens unter der gpl
> stehen.

Erstens hat keiner gesagt, dass sie ,,meistens unter GPL stehen''.
Ich bin mir nur bei der Procyon AVRlib recht sicher.  In jedem Falle
solltest du einfach nur genau hinsehen, bevor du fremden Code benutzt.

Zweitens, bist du dir so sicher, dass du dieses Problem bei anderen
MCUs nicht hättest?

> An codebeispielen mangelt es für den gcc ja nicht, wenn man aber
> davon nichts benutzen darf, hat man auch nichts davon. Privat wäre
> das ja kein Problem.

Nun, du kannst dir davon ja immer noch die Idee nehmen und es dann
selbst implementieren.  Blindlings wird man in einem kommerziellen
Projekt wohl ohnehin keinen fremden Code nehmen (den man nicht
verstanden hat), schließlich soll das Ganze ja wartbar bleiben.

Klar ist die Nachnutzung fremden Codes immer nett, aber ich hab's
bislang eher selten gemacht.  Meist braucht man nur ein vernünftiges
Codebeispiel, um davon die Idee zu nehmen.

von Andreas (Gast)


Lesenswert?

Du hast recht, zwischen Idee übernehmen und 1:1 kopieren besteht ein
Unterschied (sonst wären wir ja bei den Softwarepatenten).

Bei meiner Anwendung spielt die Schaltung die Hauptrolle. Der µC dient
eigentlich "nur" zur Ansteuerung diverser Bauteile und als PC
Schnittstelle. Daher sollte die Softwareentwicklung so einfach wie
möglich sein.

Klar, das mit dem GPL code kann mir bei jedem compiler passieren.
Trotzdem habe ich das Gefühl, dass man mit dem C18 von microchip von
Haus aus mehr Funktionen hat.

Die PIC16 hatten wohl schon Nachteile gegeüber den avrs. Aber die PIC18
sind von den Leistungsdaten her mindestens ebenbürtig. Gleiche
Schnittstellen, gleicher Speicher und da ich nicht in asm programmiere
muss ich mir über die Architektur nicht so viele gedanken machen.

Welche Controller werden eigentlich in der Industrie vorwiegend
eingesetzt?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Welche Controller werden eigentlich in der Industrie vorwiegend
> eingesetzt?

Alle. ;-)

Das hängt doch von so vielen Parametern ab...  Wenn du eine
Kleinserie machst, spielen die Kosten des Controllers z. B.
keine Rolle.  Verfügbarkeitsfragen sind dann wieder ein anderes
Ding.

Da fragst du wohl besser im allgemeinen Forum.  Ich würde den
AVR jedenfalls nicht wieder gegen einen PIC zurück tauschen
wollen.

von Bernd (Gast)


Lesenswert?

Auch wenn dieser Thread schon etwas älter ist:

Wie ist denn dieser Link zu verstehen?
http://www.gnu.org/licenses/gpl-faq.html#WhatCaseIsOutputGPL
"Only when the program copies part of itself into the output. "
Wenn ein C Compiler eine Division auf einem ARM kompiliert, muss diese
ja in SW nachgebildet werden, da der ARM keine HW-Division kennt.
Hierzu wird ja wohl eine feste Routine in das Binary eingebaut.

Unbekannter schrieb:
"Beim GCC kein Problem. In den speziellen Teilen des GCC gibt es genau
dafür eine Ausnahme-Klausel. Einfach mal die GCC-Doku lesen."
Kann mir jemand sagen, so in der GCC-Doku die Klausel steht? Wie heißt
das Stichwort, wonach man suchen muss? "Close Source", "non-free",
"proprietary"?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Sowas hier steht in gcc/libgcc2.c:

In addition to the permissions in the GNU General Public License, the
Free Software Foundation gives you unlimited permission to link the
compiled version of this file into combinations with other programs,
and to distribute those combinations without any restriction coming
from the use of this file.  (The General Public License restrictions
do apply in other respects; for example, they cover modification of
the file, and distribution when not linked into a combine
executable.)

von Bernd (Gast)


Lesenswert?

Dumme Frage, aber wenn ich mir z.B. WinARM herunterlade (sind da nur
Binarys).
Der Compiler sagt:
"arm-elf-gcc (GCC) 4.1.1 (WinARM)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE."

Ich muss zugeben, ich habe mich noch nicht wirklich viel mit GCC
beschäftigt. Wo findet man Sourcen vom GCC. Gibt es da einen direkten
Link.

Mir ist aber nach wie vor unklar, wie ich den Bezug zwischen
"arm-elf-gcc.exe" und dessen Output und dem oben genannten
"gcc/libgcc2.c" herstelle. Das setzt ja voraus, dass ich mich erst
mit dem Quellcode vom "arm-elf-gcc" beschäftigen muss, bevor ich
weiß, was ich mit dem arm-elf-gcc binary machen darf?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.