Forum: Mikrocontroller und Digitale Elektronik Fragen zu Qt


von Alexander M. (a_lexander)


Lesenswert?

Hallo Zusammen,

ich habe mir Qt heruntergeladen und beabsichtige evtl. auch mit diesem 
Framework in Zukunft zu arbeiten...
Dazu habe ich aber noch ein paar Fragen, die ich irgendwie nicht 
beantworten kann...Vielleicht kann mir da einer helfen.

1. Thematik Lizenzierung: Ich würde gern die Programme nur intern laufen 
lassen, somit nicht verkaufen etc. Gibt es dazu irgendwelche 
Lizenzierungs-Probleme oder ist das dann nicht der Fall? (Sorry für 
diese Amateuerfrage...)

2. Qt wird ja als Open-Source "gehandelt". Ich habe mir das Qt Framework 
herunter geladen und sehe das aber lediglich Header Files 
(Qt\5.15.0\mingw81_64\include), der eigentliche Source Code ist aber mMn 
nicht frei zugänglich (Qt\5.15.0\mingw81_64\lib).
Wo sind denn die Source Files der Klassen hinterlegt?

3. Wenn ich eine normale Konsolenanwendung starte, dann beginnt das 
Programm ja mit der main Funktion. Was passiert "vor" der main? Kann das 
irgendwo eingesehen werden?

Vielen Dank.

Grüße

: Bearbeitet durch User
von Bernd (Gast)


Lesenswert?

Das Unterforum PC-Programmierung wäre passender gewesen.

Alexander M. schrieb:
> 1. Thematik Lizenzierung: Ich würde gern die Programme nur intern laufen
> lassen, somit nicht verkaufen etc. Gibt es dazu irgendwelche
> Lizenzierungs-Probleme oder ist das dann nicht der Fall?
Intern kannst du tun und lassen was du willst.

> 2. Qt wird ja als Open-Source "gehandelt". Ich habe mir das
...
> Wo sind denn die Source Files der Klassen hinterlegt?
Vielleicht hast du nur die Biblothek(en) und nicht die Quellen erwischt?
Das Downloadfile sollte so um die 600 MByte haben.

> 3. Wenn ich eine normale Konsolenanwendung starte, dann beginnt das
> Programm ja mit der main Funktion. Was passiert "vor" der main? Kann das
> irgendwo eingesehen werden?
Vor der main kommt der Startupcode. Der kommt mit der libc.

von Stefan F. (Gast)


Lesenswert?

Alexander M. schrieb:
> Gibt es dazu irgendwelche Lizenzierungs-Probleme

Mein.

>  der eigentliche Source Code ist aber mMn nicht frei zugänglich

Doch ist er. Ich habe da schon oft rein geguckt. Die Quelltexte sind im 
Qt Maintenance Tool als separates optionales Paket installierbar.

> Was passiert "vor" der main? Kann das irgendwo eingesehen werden?

Das hängt von deinem C Bibliothek ab, ist nicht Qt spezifisch. Im Grunde 
genommen initialisiert er alle globalen und statischen Variablen und 
Objekte. Das steht aber in jedem C Buch, deswegen wundere ich mich, dass 
du fragst.

Das hier ist z.B. der Startup Code für den STM32F103. Aufgrund der 
Kommentare finde ich ihn aufschlussreich:
1
/**
2
 * @brief  This is the code that gets called when the processor first
3
 *          starts execution following a reset event. Only the absolutely
4
 *          necessary set is performed, after which the application
5
 *          supplied main() routine is called.
6
 * @param  None
7
 * @retval : None
8
*/
9
10
    .section  .text.Reset_Handler
11
  .weak  Reset_Handler
12
  .type  Reset_Handler, %function
13
Reset_Handler:
14
15
/* Copy the data segment initializers from flash to SRAM */
16
  movs  r1, #0
17
  b  LoopCopyDataInit
18
19
CopyDataInit:
20
  ldr  r3, =_sidata
21
  ldr  r3, [r3, r1]
22
  str  r3, [r0, r1]
23
  adds  r1, r1, #4
24
25
LoopCopyDataInit:
26
  ldr  r0, =_sdata
27
  ldr  r3, =_edata
28
  adds  r2, r0, r1
29
  cmp  r2, r3
30
  bcc  CopyDataInit
31
  ldr  r2, =_sbss
32
  b  LoopFillZerobss
33
/* Zero fill the bss segment. */
34
FillZerobss:
35
  movs r3, #0
36
   str  r3, [r2]
37
  adds r2, r2, #4
38
39
LoopFillZerobss:
40
  ldr  r3, = _ebss
41
  cmp  r2, r3
42
  bcc  FillZerobss
43
44
/* Call the clock system intitialization function.*/
45
    bl  SystemInit
46
/* Call static constructors */
47
    bl __libc_init_array
48
/* Call the application's entry point.*/
49
  bl  main

Anmerkung: Die Prozedur SystemInit() ist standardmäßig leer. Darunter 
wird main() aufgerufen.

So ähnlich wird es wohl in jedem C/C++ Programm aussehen.

von Olaf (Gast)


Lesenswert?

> Gibt es dazu irgendwelche Lizenzierungs-Probleme oder ist das dann
> nicht der Fall?

Laesst sich nicht ganz so einfach beantworten weil sich da auch immer 
mal
was aendert und vor kurzem haben sie mal wieder angefangen an der 
Kohleschraube zu drehen. Aber bisher ist es noch so das du fuer rein 
private Nutzung keine Probleme hast.

Mein Eindruck: In der Vergangenheit hat Qt immer so eine Art Eiertanz 
hingelegt. Auf der einen Seite haetten sie schon gerne mehr Kohle 
eingesackt, aber sie konnten es nicht weil sie es sich nicht erlauben 
konnten zu viele Nutzer vor den Kopf zu stossen. Mittlerweile werden sie 
mutiger. Ich denke das wird noch 2-3Jahre so weitergehen und dann sind 
genug Leute angepisst um was eigenes auf die Beine zu stellen.

> Wo sind denn die Source Files der Klassen hinterlegt?

Keine Ahnung wo, aber irgendwo gibt es die. Ich hab die selber vor 
10Jahren scho nmal runtergeladen und neu uebersetzt. Ist aber megafett. 
Damit kannst du deinen Rechner schon eine weile beschaeftigen. Und das 
muss auch nicht unbedingt fuer jede Libarie gelten. Qt versucht IMHO 
durch immer mehr Libaries ein immer staerkeres Vendor lock in zu 
erreichen.

> Was passiert "vor" der main?

Das hat nichts mit Qt zutun sondern ist eine Sache des C/C++ Compilers. 
Da gibt es irgendwo ein Startupfile. Hat mich ausserhalb von 
Crossassembling aber noch nicht besonders interessiert. Funktioniert ja. 
:-)

Olaf

von Oliver S. (oliverso)


Lesenswert?

Olaf schrieb:
> Laesst sich nicht ganz so einfach beantworten weil sich da auch immer
> mal
> was aendert und vor kurzem haben sie mal wieder angefangen an der
> Kohleschraube zu drehen.

Lässt sich eigentlich ganz einfach beantworten, da die Sourcen Open 
source sind, und auch bleiben werden.

Oliver

von Stefan F. (Gast)


Lesenswert?

Oliver S. schrieb:
> Lässt sich eigentlich ganz einfach beantworten, da die Sourcen Open
> source sind, und auch bleiben werden.

"Open Source" heißt erst einmal nur, dass du rein gucken darfst.

Inwiefern du die Quelltexte oder die darauf generierten Binaries 
benutzen darfst, geht aus der Lizenzvereinbarung hervor.

Wenn alles, was man lesen darf, völlig frei wäre, dürfte man 
uneingeschränkt aus jedem Buch kopieren.

von Alexander M. (a_lexander)


Lesenswert?

Vielen Dank euch ;)

Zu 1.:
Um ganz sicher zu gehen: Ich kann tun und lassen, was ich will, wenn ich 
die Software intern verwende, auch wenn ich dadurch natürlich Kosten 
einsparen kann und somit einen Wettbewerbsvorteil bekomme.

Zu 2.: Ja genau, hab nur die Libraries ohne Source-Files. Werde aber mir 
jetzt das mit dem Maintenance Tool nochmal genauer anschauen. Vielleicht 
da noch eine weitere Frage, damit ich da auch Gewissheit habe: das .Net 
Framework ist ja eben nicht Open-Source oder?

Zu 3.: Danke.

Grüße

von Stefan F. (Gast)


Lesenswert?

Alexander M. schrieb:
> Zu 1.:
> Ich kann tun und lassen, was ich will, wenn ich
> die Software intern verwende
Ja

> das .Net Framework ist ja eben nicht Open-Source oder?

Doch ich denke schon: https://referencesource.microsoft.com/

von Thomas W. (Gast)


Lesenswert?

Moin, -

Qt hat die Lizenzbedingungen massiv veraendert seit QT6:
- OpenSource ist wirklich OpenSource, d.h. Du bist verpflichtet den 
Quelltext Deines Programmes an den Benutzer zu geben (Du sagtest 
"intern" ich nehme mal ab, Kollegen). Ob der Boss das auch so mag -> 
weiss ich nicht. Mit dem Bestaetigung der "Open Source"-Version 
schliesst Du einen Vertrag (oder der Geschaeftsfuehrer), der sehr strikt 
ist.

- Die OpenSource-Versionen werden jetzt ein Jahr abgelagert, d.h. Du 
bekommst keine Updates der Libraries. Ob das auch fuer kritische Fehler 
(Datenverlust,  Escalierung der Priviligien) gilt: Keine Ahnung (d.h. 
keine Aussage seitens Qt).

Diese beiden Unsicherheiten haben dazu gefuehrt, dass ich Qt nicht mehr 
einsetze. Das ist schade, aber das Risiko war mir zu hoch (und das Abo 
zu teuer).

Bischen Info:

https://www.heise.de/news/Qt-6-Abomodell-koennte-zum-Fallstrick-fuer-kommerzielle-Kunden-werden-4942027.html

https://www.heise.de/developer/meldung/Qt-Plaene-fuer-2020-Qt-6-und-verzoegerte-Open-Source-Releases-4700398.html


Gruesse

Th.

von Martin (Gast)


Lesenswert?

Alexander M. schrieb:
> 2. Qt wird ja als Open-Source "gehandelt". Ich habe mir das Qt Framework
> herunter geladen und sehe das aber lediglich Header Files
> (Qt\5.15.0\mingw81_64\include), der eigentliche Source Code ist aber mMn
> nicht frei zugänglich (Qt\5.15.0\mingw81_64\lib).
> Wo sind denn die Source Files der Klassen hinterlegt?

http://ftp.fau.de/qtproject/official_releases/qt/

von Alexander M. (a_lexander)


Lesenswert?

Danke!

Hm das macht alles irgendwie nicht einfacher... Das mit dem Abomodell 
ist ja echt ein ziemlicher Negativpunkt. Gibt es denn aktuell schon 
komplette Open Source Frameworks, die ähnliches abbilden wie .net / Qt?

(Ich weiß nicht warum, aber irgendwie habe ich eine persönliche 
Abneigung gegen C# / .Net / Microsoft, ich hab's mir aber auch noch nie 
genauer angeschaut)

Muss ich mir mal morgen nochmal überlegen, welches Framework da für 
meine Zwecke am ehesten passt...

Grüße

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Thomas W. schrieb:
> - OpenSource ist wirklich OpenSource, d.h. Du bist verpflichtet den
> Quelltext Deines Programmes an den Benutzer zu geben

Du meinst freie Software. Soweit ich weiß, gilt das aber nur für neue 
Module, die ab jetzt bevorzugt nur noch unter GPL und nicht mehr wie 
bisher auch unter LGPL verfügbar sind.


> - Die OpenSource-Versionen werden jetzt ein Jahr abgelagert, d.h. Du
> bekommst keine Updates der Libraries.

Du bekommst sie halt um ein Jahr verzögert.

> Diese beiden Unsicherheiten haben dazu gefuehrt, dass ich Qt nicht mehr
> einsetze. Das ist schade, aber das Risiko war mir zu hoch (und das Abo
> zu teuer).

Der größte Hammer ist meiner Meinung nach, dass man bei Ablauf der 
Lizenz seine eigene Software nicht nur nicht mehr weiterentwickeln (was 
ja verständlich wäre), sondern die bereits fertig entwickelte Software 
auch nicht mehr weiter verkaufen darf!
Wenn's da, aus welchen Gründen auch immer, bei der Verlängerung zu 
Schwierigkeiten oder Verzögerungen kommt, kann das eine Firma schnell 
kaputt machen. Ob das so ein schlauer Zug war? Da werden vermutlich 
viele kommerzielle Nutzer sich abwenden, weil ihnen das Risiko zu hoch 
ist.

Thomas W. schrieb:
> 
https://www.heise.de/developer/meldung/Qt-Plaene-fuer-2020-Qt-6-und-verzoegerte-Open-Source-Releases-4700398.html

Da heißt es:
"Als Grund nennt das Unternehmen die finanziellen Einbußen in der 
Corona-Krise, die sie zwinge, kurzfristig die Einnahmen zu verbessern."

Das klingt mir nach einem Schein-Argument. Die Zahlen zumindest für die 
ersten drei Quartale 2020 waren ziemlich gut. Auf 
https://f.hubspotusercontent10.net/hubfs/149513/_website/QtV2/QtV2%20Investors/Q3_2020_interim_statement.pdf 
heißt es dann auch:
"On the whole, however, the impacts of the COVID-19 epidemic on the 
company’s business has thus far been relatively minor"

: Bearbeitet durch User
von Lothar (Gast)


Lesenswert?

Bei FLTK: LPGL + Static Linking frei

https://www.fltk.org/COPYING.php

Bei Qt sind die Lizenzbedingungen so lang, dass sie FAQs machen mussten:

https://www.qt.io/faq/tag/qt-commercial-licensing

https://www.qt.io/faq/tag/qt-open-source-licensing

von Stefan F. (Gast)


Lesenswert?

Ich bewege mich zunehmend in Richtung Web-Anwendungen, wo die Ausgabe im 
Browser stattfindet. Wenn man es da mit Spezial-Design nicht übertreibt, 
ist das zukunftssicher.

Bibliotheken für XML, JSON, Zeichensätze, etc. bekommt man auch 
woanders.

von zop (Gast)


Lesenswert?

Thomas W. schrieb:
> - Die OpenSource-Versionen werden jetzt ein Jahr abgelagert, d.h. Du
> bekommst keine Updates der Libraries. Ob das auch fuer kritische Fehler
> (Datenverlust,  Escalierung der Priviligien) gilt: Keine Ahnung (d.h.
> keine Aussage seitens Qt).
Da geht es um die LTS-Versionen.

von Alexander M. (a_lexander)


Lesenswert?

Vielen Dank für die Antworten.

Mit welchen Software-Paketen arbeitet ihr denn dann so bzw. habt ihr da 
Meinungen, welche SDKs bzw. Programmiersprachen aktuell verwendet werden 
"für die Industrie"?

Ich meine halt, viele Hersteller von Sensoren etc. bieten aktuell 
(leider) für ihre Schnittstellen öfters nur C# Libraries an. Wird sich 
das eurer Meinung nach vielleicht in Zukunft ändern? Oder bin ich da 
sogar vielleicht falsch informiert und das ist gar nicht so?

Speziell geht's mir da natürlich um den Vergleich C++ / C#, oder geht's 
vielleicht in die Richtung Python und alle Sensoren Schnittstellen 
werden damit ausgestattet?

Grüße

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Qt ist für mich seit vielen Jahren eine gute Alternative zu Frameworks 
von Microsoft und Oracle (Java).

Auf Mikrocontroller würde ich es aber wohl kaum einsetzen, und erst 
recht kein Python. Für Mikrocontroller nutze ich C, machmal auch C++. 
Ich könnte mir dort auch Basic vorstellen.

von Alexander M. (a_lexander)


Lesenswert?

Stefan ⛄ F. schrieb:
> Qt ist für mich seit vielen Jahren eine gute Alternative zu Frameworks
> von Microsoft und Oracle (Java).
>
> Auf Mikrocontroller würde ich es aber wohl kaum einsetzen, und erst
> recht kein Python. Für Mikrocontroller nutze ich C, machmal auch C++.
> Ich könnte mir dort auch Basic vorstellen.

Danke ;) Ja mir ging's jetzt auch nicht um den Embedded Bereich, eher um 
den Bereich "1 Stufe darüber". Werde da wohl mal die Hersteller-Seiten 
der Sensortechnik etc. durchforsten und schauen, was da so die 
gängigsten Schnittstellen-Sprachen sind ;)

Grüße

von Stefan F. (Gast)


Lesenswert?

Ich kann dir nicht folgen. Was hat ein Sensor mit der Programmiersprache 
zu tun?

Sensoren haben Hardwareschnittstellen und Übertragungsprotokolle. Sofern 
diese offen dokumentiert sind (was ich für selbstverständlich halte), 
kannst du sie theoretisch in jeder Programmiersprache ansteuern.

Bedenke aber, dass einige Programmiersprachen ab Werk nur sehr wenige 
Schnittstellen ansprechen können. Java zum Beispiel kann nur stdin, 
stdout und Netzwerk. Die meisten Programmiersprachen haben irgendwie die 
Möglichkeit C Bibliotheken anzubinden, womit dir die ganze Welt offen 
steht.

von Olaf (Gast)


Lesenswert?

> der Sensortechnik etc. durchforsten und schauen, was da so die
> gängigsten Schnittstellen-Sprachen sind ;)

Ich glaube du weisst nicht wovon du redest. Eine Schnittstelle hat 
nichts mit der Programmiersprache zutun mit der ein Programmierer sie 
nutzen will.

Olaf

von MCUA (Gast)


Lesenswert?

> der Sensortechnik etc. durchforsten und schauen, was da so die
> gängigsten Schnittstellen-Sprachen sind ;)
Die Programmiersprachen dafür heissen U und I.

von Dirk (Gast)


Lesenswert?

Du könntest Dir auch mal Cooperspice anschauen. Das ist ein Fork von Qt 
4.x.
Verfügbar unter https://www.copperspice.com/

Hatte aber selbst noch keine Zeit es mir anzuschauen.

von Experte (Gast)


Lesenswert?

Alexander M. schrieb:
> ich habe mir Qt heruntergeladen und beabsichtige evtl. auch mit diesem
> Framework in Zukunft zu arbeiten...

   [...]

> 1. Thematik Lizenzierung: Ich würde gern die Programme nur intern laufen

Naja, durch die jüngsten "Ideen" zur Lizenzierung hat sich Qt selbst ins 
Aus gekegelt.

Klar, Qt hat noch das Momentum all seiner vergangen, guten Jahre, und 
wird noch eine ganze Weile eine gewichtige Rolle spielen. Aber das Ende 
ist eingeläutet.

von Stefan F. (Gast)


Lesenswert?

Experte schrieb:
> Klar, Qt hat noch das Momentum all seiner vergangen, guten Jahre, und
> wird noch eine ganze Weile eine gewichtige Rolle spielen. Aber das Ende
> ist eingeläutet.

Ich nutze Qt seit Version 2 im Jahr 2000. Seit dem wurde es schon oft 
für Tot erklärt wurde. Dennoch ist es noch da, irgendwie.

von Rolf M. (rmagnus)


Lesenswert?

Stefan ⛄ F. schrieb:
> Bedenke aber, dass einige Programmiersprachen ab Werk nur sehr wenige
> Schnittstellen ansprechen können. Java zum Beispiel kann nur stdin,
> stdout und Netzwerk.

C kann nicht mal Netzwerk.

Stefan ⛄ F. schrieb:
> Ich nutze Qt seit Version 2 im Jahr 2000. Seit dem wurde es schon oft
> für Tot erklärt wurde. Dennoch ist es noch da, irgendwie.

Ich habe mit Qt 1.4 angenfangen. Irgendwo liegt noch das Buch rum, das 
ich dazu mal gekauft hatte - mit Ausblick darauf, was in Qt 2 kommen 
wird ;-)
Was ich jetzt aber sehe: Qt hat sich eine ordentliche "user base" 
aufgebaut und verärgert die jetzt durch diese Lizenzkapriolen, und zwar 
Business-Kunden und OpenSource-Entwickler gleichermaßen. Klar werden das 
viele weiter benutzen, schon alleine weil man bestehende Software nicht 
einfach mal schnell auf was anderes umstellt. Aber die Frage ist, wie es 
mit Neukunden aussieht, oder mit neuen Projekten bei Bestandskunden.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Rolf M. schrieb:
> C kann nicht mal Netzwerk.

Richtig. Aber die mir geläufigen Betriebssysteme (außer Android) stellen 
alle Schnittstellen mit C Interface bereit. Also sind in C alle 
Schnittstellen ohne Umwegen nutzbar.

von Εrnst B. (ernst)


Lesenswert?

Rolf M. schrieb:
> Qt hat sich eine ordentliche "user base"
> aufgebaut und verärgert die jetzt durch diese Lizenzkapriolen, und zwar
> Business-Kunden und OpenSource-Entwickler gleichermaßen.

Als kleiner Trost:  Wenn sie es mit ihren Lizenzspielchen zu weit 
treiben, wird die QT unter BSD-Lizenz freigegeben.

https://kde.org/community/whatiskde/kdefreeqtfoundation/

von Oliver S. (oliverso)


Lesenswert?

Alexander M. schrieb:
> Hm das macht alles irgendwie nicht einfacher... Das mit dem Abomodell
> ist ja echt ein ziemlicher Negativpunkt. Gibt es denn aktuell schon
> komplette Open Source Frameworks, die ähnliches abbilden wie .net / Qt?

Was genau ist denn dein Problem?

Qt IST vollständig Open source. GPL, einige libs auch LPGL.
Damit kannst und darfst du Software für den Eigengebrauch, auch in einer 
Firma, erstellen. Die Abos brauchst du erst, wenn du entweder damit 
erstellt Software vertreiben willst, ohne dabei der GPL zu entsprechen, 
oder wenn du Support willst.

An dem Open-Source-Status wird sich auch nichts ändern. Wenn du wissen 
willst, warum das so ist, lies nach. Google und Wikipedia wissen 
Bescheid.

Oliver

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.