Skip to content
Snippets Groups Projects
Commit b70c6682 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Beispiele und Screenshots 5.5.2025

parent 2969ab9e
No related branches found
No related tags found
No related merge requests found
#include "answer.h"
int answer (void)
{
return 42;
}
#include "answer.h"
int answer (void)
{
return 23;
}
cassini/home/peter/bo/2025ss/nit/20250505> cat philosophy.c
#include <stdio.h>
#include "answer.h"
int main (void)
{
printf ("The answer is %d.\n", answer ());
return 0;
}
cassini/home/peter/bo/2025ss/nit/20250505> cat answer.h
extern int answer (void);
cassini/home/peter/bo/2025ss/nit/20250505> cat answer.c
#include "answer.h"
int answer (void)
{
return 23;
}
cassini/home/peter/bo/2025ss/nit/20250505> gcc -Wall -O3 philosophy.c -o philosophy
/usr/bin/ld: /tmp/ccPKUR68.o: in function `main':
philosophy.c:(.text.startup+0x5): undefined reference to `answer'
collect2: error: ld returned 1 exit status
cassini/home/peter/bo/2025ss/nit/20250505> gcc -Wall -O3 philosophy.c answer.c -o philosophy
cassini/home/peter/bo/2025ss/nit/20250505> ./philosophy
The answer is 23.
cassini/home/peter/bo/2025ss/nit/20250505> gcc -Wall -O3 philosophy.c -c
cassini/home/peter/bo/2025ss/nit/20250505> gcc -Wall -O3 answer.c -c
cassini/home/peter/bo/2025ss/nit/20250505> ls -l *.o
-rw-r--r-- 1 peter peter 1088 5. Mai 16:53 answer.o
-rw-r--r-- 1 peter peter 1528 5. Mai 16:53 philosophy.o
cassini/home/peter/bo/2025ss/nit/20250505> gcc philosophy.o answer.o -o philosophy
cassini/home/peter/bo/2025ss/nit/20250505> ./philosophy
The answer is 23.
cassini/home/peter/bo/2025ss/nit/20250505>
cassini/home/peter/bo/2025ss/nit/20250505> cat philosophy.c
#include <stdio.h>
#include "answer.h"
int main (void)
{
printf ("The answer is %d.\n", answer ());
return 0;
}
cassini/home/peter/bo/2025ss/nit/20250505> cat answer.h
extern int answer (void);
cassini/home/peter/bo/2025ss/nit/20250505> cat answer-2.c
#include "answer.h"
int answer (void)
{
return 42;
}
cassini/home/peter/bo/2025ss/nit/20250505> gcc -Wall -O3 answer-2.c -c
cassini/home/peter/bo/2025ss/nit/20250505> gcc philosophy.o answer-2.o -o philosophy
cassini/home/peter/bo/2025ss/nit/20250505> ./philosophy
The answer is 42.
cassini/home/peter/bo/2025ss/nit/20250505>
...@@ -6,8 +6,269 @@ Aufgabe: Was sind die Unterschiede zwischen der GNU GPL ...@@ -6,8 +6,269 @@ Aufgabe: Was sind die Unterschiede zwischen der GNU GPL
Unterschiede zwischen GNU GPL und GNU LGPL, 05.05.2025, 16:26:43 Unterschiede zwischen GNU GPL und GNU LGPL, 05.05.2025, 16:26:43
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Rahs Die LGPL ermöglicht auch ein Anbinden (Linken) mit proprietärer Software,
aber der Objekt-Code der Bibliothek selbst muß freie Software bleiben.
Es ist nicht zulässig, ein Reverse-Engineering oder Debuggen der
Bibliothek zu unterbinden oder einzuschränken.
Ziel: Der Austausch der Bibliothek in dem kombinierten Werk muß möglich sein.
Was für technische Voraussetzungen muß das kombinierte Werk bieten?
- Es muß möglich sein, das kombinierte Werk mit der veränderten
Bibliothek neu zu linken.
- Dies ist unproblematisch, wenn wir dynamisch linken.
Wenn wir statisch linken: Objekt-Dateien mit ausliefern.
Programm P (proprietär)
Bibliothek A (unter LGPL)
Bibliothek B (proprietär)
Ausliefern (dynamisch gelinkt):
- ausführbare Version von Programm P (ohne Quelltext)
- ausführbare Version von Bibliothek A (mit Quelltext)
- ausführbare Version von Bibliothek B (ohne Quelltext)
- LGPL und GPL (weil die LGPL die GPL referenziert)
Ausliefern (statisch gelinkt):
- ausführbare Version von Programm P (ohne Quelltext)
- Quelltext von Bibliothek A
- Object-Code von Bibiliothek B (ohne Quelltext)
- Object-Code von Programm P (ohne Quelltext)
- LGPL und GPL
GPT-4o mini:
Prompt:
What differences are there between the GNU LGPL and GNU GPL?
Antwort:
The GNU Lesser General Public License (LGPL) and the GNU General Public
License (GPL) are both free software licenses published by the Free Software
Foundation, but they have different implications for how software can be
used, modified, and distributed. Here are the key differences:
Linking: GPL: If you modify a GPL-licensed program and distribute it, you
must also distribute the entire source code of the modified program under the
same GPL license. This means that any software that links to a GPL library
must also be GPL-licensed. LGPL: The LGPL allows developers to link to the
library without having to license their own software under the GPL. This
means that you can use and integrate LGPL libraries in proprietary software
without needing to release the source code of your own application.
Modification and Distribution: GPL: Any derivative work based on a
GPL-licensed program must also be licensed under the GPL. This ensures that
all modifications remain free and open. LGPL: You can modify an LGPL-licensed
library and distribute it under the LGPL, but you can also use it in
proprietary software without releasing the source code of the proprietary
software. However, if you modify the LGPL library itself, you must make those
modifications available under the LGPL.
Use Cases: GPL: Typically used for software that the author wants to ensure
remains free and open-source, even when combined with other software. LGPL:
Often used for libraries that the author wants to be usable in both
open-source and proprietary software, encouraging wider adoption while still
maintaining some level of openness.
Compatibility: GPL: More restrictive in terms of compatibility with other
licenses, as it requires derivative works to be licensed under the GPL. LGPL:
More permissive, allowing for easier integration with proprietary software
and other licenses.
In summary, the main difference lies in how they handle linking and the
obligations imposed on derivative works. The GPL is stricter, while the LGPL
offers more flexibility for developers who want to use libraries in both
open-source and proprietary projects.
Anmerkungen:
- Der Text wirkt neutraler als die deutsche Version (s.u.).
- Es fehlt ein Hinweis auf praktische Nutzbarkeit (dynamisches Linken).
Chat gpt 4o:
Prompt:
Bitte beschreibe mir die Unterscheide zwsichen GNU GPL v3 und GNU LGPL v3
Antwort:
Die GNU General Public License (GPL) v3 und die GNU Lesser General Public
License (LGPL) v3 sind zwei freie Softwarelizenzen der Free Software
Foundation (FSF), die unterschiedliche Bedingungen für die Nutzung und
Weitergabe von Software stellen. Hier sind die wichtigsten Unterschiede
zwischen den beiden:
1. Kopplung und Weitergabe von Programmen
GPL v3:
Starke Copyleft-Lizenz: Jede Software, die mit GPL-lizenzierter Software
statisch oder dynamisch verlinkt ist, muss ebenfalls unter der GPL
veröffentlicht werden.
Du musst den Quellcode offenlegen, wenn du die Software veränderst und
weitergibst.
Auch alle abgeleiteten Werke müssen unter GPL stehen.
LGPL v3:
Schwächeres Copyleft: Erlaubt, dass proprietäre Programme dynamisch mit
LGPL-Bibliotheken verlinkt werden, ohne dass das gesamte Programm unter der
LGPL stehen muss.
Nur Änderungen an der LGPL-Komponente selbst müssen veröffentlicht werden,
nicht dein gesamtes Programm.
Ideal für Bibliotheken, die auch in proprietären Anwendungen verwendet werden
sollen.
2. Verwendung in proprietärer Software
GPL v3:
Nicht kompatibel mit proprietärer Software, da der Quellcode komplett
offengelegt und die Software unter GPL weitergegeben werden muss.
LGPL v3:
Kompatibler mit proprietärer Software: Du darfst eine LGPL-Bibliothek in ein
proprietäres Programm einbinden, solange du bestimmte Bedingungen erfüllst
(z. B. Möglichkeit zum Austausch der Bibliothek durch den Nutzer).
3. Typische Anwendungsfälle
Lizenz Typischer Einsatz
GPL v3 Vollständige Anwendungen, Tools, OS-Komponenten, die unter Copyleft
stehen sollen
LGPL v3 Bibliotheken oder Module, die auch in proprietären Programmen
verwendet werden dürfen
4. Tivoization und DRM (nur GPL v3 relevant)
Beide Lizenzen verbieten Tivoization (Einschränkung der Nutzung durch DRM bei
GPL-kompatibler Hardware).
Das betrifft insbesondere Gerätehersteller, die verhindern wollen, dass
Nutzer modifizierte Software auf ihrer Hardware laufen lassen – was unter
GPL v3 nicht erlaubt ist.
Zusammenfassung:
Aspekt GPL v3 LGPL v3
Copyleft Stark (alles muss GPL sein) Schwächer (nur die Bibliothek selbst)
Einbindung in Closed Source Nicht erlaubt Erlaubt (bei dynamischer Verlinkung)
Ziel Schutz freier Software Förderung von breiter Nutzung
Typisch für Anwendungen, komplette Programme Bibliotheken
Anmerkungen:
- Nicht nur "bei dynamischer Verlinkung".
- Der Text macht Werbung dafür, bei Bibliotheken auch ein Verlinken mit
proprietärer Software zuzulassen: "Ideal für ...", "Förderung von ..."
Die Free Software Foundation (vmtl. Richard Stallman) wirbt für das
Gegenteil: https://www.gnu.org/licenses/why-not-lgpl.html.en
Unterschiede zwischen GNU GPL und GNU AGPL, 05.05.2025, 16:26:43 Unterschiede zwischen GNU GPL und GNU AGPL, 05.05.2025, 16:26:43
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
THensel GPL: "Mere interaction with a user through a computer network, with no transfer
of a copy, is not conveying."
AGPL: Auch bei "mere interaction with a user through a computer network" muß man
Zugriff auf den Quelltext bekommen.
Alle Benutzer der Software sollen Zugriff auf den Quelltext bekommen,
auch wenn dies online über ein Netzwerk erfolgt.
Problem (GPL): Server-Betreiber gewähren Benutzer Online-Zugriff auf eine
modifizierte GPL-Software. Dies zählt gemäß GPL als private Änderung, betrifft
aber eine breite Öffentlichkeit.
--> Das Recht der Betroffenen gemäß der GPL, die Software prüfen
und ggf. verändern zu können, ist ausgehebelt.
Lösung: Die AGPL deckt genau diesen Fall ab.
Im Sinne nachhaltiger IT ist die AGPL für Anwendungen sinnvoll,
wenn eine Software für die Nutzung über das Internet gedacht ist
(Web-Interface, Online-API).
Wer sich konsequent für IT-Nachhaltigkeit einsetzt, hat keine Nachteile,
wenn er durchgehend die AGPL verwendet.
"Software as a Service" (SaaS), bzw. "Service as a Software Substitute" (SaaSS - FSF):
- Problem: Der Rechner, der die Daten verarbeitet, steht nicht unter der
Kontrolle des Besitzers der Daten.
--> Datenschutz ist ausgehebelt; Verlust der Datenhoheit
- Lösungsansätze:
- SaaS nicht benutzen
- homomorphe Verschlüsselung
- Bei AGPL-Software: Quelltext herunterladen, Server selbst betreiben
Aber: Dies ist kein Problem, das man durch eine Lizenz lösen könnte!
Prompt:
Was ist der Unterschied zwischen GPL und AGPL?
ChatGPT 4o:
Der Unterschied zwischen der GPL (GNU General Public License) und der AGPL
(GNU Affero General Public License) liegt vor allem in der Art und Weise,
wie sie mit Software umgehen, die über ein Netzwerk (z. B. Webanwendungen)
bereitgestellt wird.
Hier ist eine kurze Gegenüberstellung:
Tabelle: Merkmal / GPL (v3) / AGPL (v3)
Weitergabe bei Verteilung:
GPL:
Wenn du Software, die unter der GPL steht, verbreitest (z. B. durch
Verkauf, Download etc.), musst du auch den Quellcode bereitstellen.
AGPL:
Gilt genauso wie bei der GPL.
Nutzung über ein Netzwerk:
GPL:
Keine Verpflichtung, Quellcode offenzulegen, wenn die Software nur als
Dienst über das Netz angeboten wird (z. B. eine Web-App).
AGPL:
Pflicht zur Offenlegung des Quellcodes, wenn die Software über ein
Netzwerk genutzt wird, selbst ohne physische Weitergabe.
Zielsetzung
GPL:
Schutz der Freiheit bei traditioneller Softwareverteilung.
AGPL:
Verhindert das sogenannte "SaaS-Loophole"
(Software-as-a-Service-Schlupfloch).
Typische Anwendung
GPL:
Desktop-Programme, lokal installierte Tools.
AGPL:
Webanwendungen, APIs, Online-Dienste.
Beispiel:
- Wenn du eine Anwendung unter der GPL betreibst und sie nur auf deinem
Server nutzt, ohne sie zu verteilen, musst du den Code nicht
veröffentlichen.
- Bei der AGPL musst du den Quellcode auch dann veröffentlichen, wenn Dritte
nur über das Internet damit interagieren (z. B. Benutzer einer Web-App).
Anmerkungen:
- Die AGPL löst _nicht_ das "SaaSS"-Problem,
aber sie schließt das "SaaSS-Loophole":
Es ist legal, GPL-Software als SaaSS anzubieten, ohne den Quelltext zu veröffentlichen.
--> Umwandlung von GPL-Software in de-facto proprietäre SaaSS-Software ist möglich.
Aktuelle Nachrichten, 05.05.2025, 18:39:27
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signal-Affäre: In US-Regierung benutzter modifizierter Messenger wurde geknackt
https://www.heise.de/-10371096
- Signal: Freie Software unter GNU AGPL v3
- TeleMessage: Forkk vo Signal, ebenfalls unter GNU AGPL v3
#include <stdio.h>
#include "answer.h"
int main (void)
{
printf ("The answer is %d.\n", answer ());
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment