Ich habe unter Ubuntu-Linux ein kleines Testprogramm mit FLTK/Fluid geschrieben, womit ich dynamisches/statisches linken teste. Dynamisch gelinkt ist es 21 kByte, statisch gelinkt 580,7 kByte groß. Statisch dazu gelinkt wird nur die FLTK-Library. Beide Programme funktionieren auf meinem PC gleich (Bild OutWin.png die anderen Bilder zeigen die Dateigrößen). Wenn ich mir in der Konsole mit "file QtTest" dessen Eigenschaften ansehe steht dort beide male "dynamically linked", was mich etwas verunsichert. ---------------- QtTest: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=ab966515cfaa015f744d7423b747e04cff3242fe, for GNU/Linux 3.2.0, with debug_info, not stripped ---------------- Wenn ich in der Konsole mit "ldd QtTest" der statisch gelinkten Version die Liste der dynamisch gelinkten Librarys für das Programm ansehe, finde ich dort kein FLTK. Dies bedeutet zusammen mit der Dateigröße doch, daß FLTK statisch gelinkt ist. In der dynamisch gelinkten Version ist FLTK mit aufgeführt. ---------------- linux-vdso.so.1 (0x00007ffc34b56000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007c6826b15000) libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007c68269d5000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007c6826600000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007c68269b5000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007c6826200000) /lib64/ld-linux-x86-64.so.2 (0x00007c6826c8b000) libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007c682698b000) libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007c6826983000) libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007c682697b000) libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007c6826963000) libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007c6826956000) ---------------- Meine Frage: Da ich auf allen meinen Rechnern FLTK installiert habe, wie kann ich sicher sein dass das Programm auf Rechnern ohne installiertes FLTK läuft? Gruß. Tom
Tom A. schrieb: > Wenn ich mir in der Konsole mit "file QtTest" dessen Eigenschaften > ansehe steht dort beide male "dynamically linked", was mich etwas > verunsichert. Du hast ja nur einen Teil statisch dazugelinkt. Da bleibt noch genug uebrig. :) Edith: > wie > kann ich sicher sein dass das Programm auf Rechnern ohne installiertes > FLTK läuft? Sicher ist das nicht. Wenn naemlich das FLTK nicht (mehr) zu den uebrigen Bibliotheken passt.
:
Bearbeitet durch User
Konnte das Problem selbst lösen. Habe eine statisch und eine dynamisch gelinkte Version des Programms erstellt und gespeichert. Danach FLTK deinstalliert und jede Version mal gestartet. Die dynamische Version läuft nicht mehr, die statische Version funktioniert. Da der PC ein normales Ubuntu Entwicklungssystem, ohne Besonderheiten, ist sollte das Programm auf den meisten Linux-PC's laufen. Und falls nicht kann man mit "ldd" nachsehen was fehlt. Jetzt hoffe ich nur, dass ich FLTK wieder installieren kann. Bei www.fltk.org ist heute der Wurm drin und sie sind nicht erreichbar. Tom
Tom A. schrieb: > Konnte das Problem selbst lösen. > > Habe eine statisch und eine dynamisch gelinkte Version des Programms > erstellt und gespeichert. Danach FLTK deinstalliert und jede Version mal > gestartet. Die dynamische Version läuft nicht mehr, die statische > Version funktioniert. Umbenennen haette gereicht. > Da der PC ein normales Ubuntu Entwicklungssystem, ohne Besonderheiten, > ist sollte das Programm auf den meisten Linux-PC's laufen. Und falls > nicht kann man mit "ldd" nachsehen was fehlt. Das ist nur das Prinzip Hoffnung. Oder hast du geprueft welche externen Referenzen noch von FLTK angezogen werden? Die koennen ja durchaus in weiteren dynamisch gelinkten Libs liegen...
Tom A. schrieb: > Jetzt hoffe ich nur, dass ich FLTK wieder installieren kann. Bei > www.fltk.org ist heute der Wurm drin und sie sind nicht erreichbar. Normalerweise installiert man doch Pakete für seine Distribution über den Paketmanager seiner Distribution. Bei Dir also deb Pakete aus Ubuntu. Brauchst Du die aller neueste Version von fltk?
Tom A. schrieb: > Jetzt hoffe ich nur, dass ich FLTK wieder installieren kann. Bei > www.fltk.org ist heute der Wurm drin und sie sind nicht erreichbar. Wenn das Programm nachher möglichst problemlos auf andere Linux-Installationen übertragbar sein soll, wär libfltk-dev / libfltk1.3-dev aus den Paketquellen vmtl. besser. Verhindert Probleme mit: Motopick schrieb: > externen Referenzen noch von FLTK angezogen Und du könntest dynamisch linken, und das dann einfach in ein passendes .deb verpacken, was die Abhängigkeiten reinzieht.
Normalerweise ist das ganz einfach, wenn man alles statisch linken will. Man macht einfach "gcc -s" statt "gcc", fertig. Solange man die Libs mit -lirgendnelib angegeben hat, und nicht mit libirgendnelib.so oder libirgendnelib.a, nimmt es dann jenachdem ob man -s angegeben hat oder nicht die .a oder die .so, und damit geht dann alles out of the box. Dann kann man noch Optimierungen einschalten (-Os -Wl,--gc-sections -ffunction-sections -fdata-sections), dann ist es oft auch gar nicht mehr allzu gross.
Da wurden ja noch einige Tips gegeben, danke euch - werde ich mir ansehen. Da FLTK 1.3.8 nun schon weg war, habe ich die Version 1.4 ausprobiert. Dort ist das Problem genau umgekehrt, es wird immer die statische Bibliothek gelinkt. Da hat so ein einfaches Programm schnell eine Größe von 1MByte. Bin wieder zurück auf 1.3.8. Ist ja nicht für ein Projekt, sondern zum lernen und ausprobieren. Tom
Daniel A. schrieb: > Normalerweise ist das ganz einfach, wenn man alles statisch linken will. > Man macht einfach "gcc -s" statt "gcc", fertig. Maja, nicht ganz. Man muss schon auch von sämtlichen verwendeten Libs eine statische Version installiert haben. Und in manchen Fällen, wie es z.B. oft bei openssl gemacht wird, werden dynamische Bibliotheken auch zur Laufzeit per dlopen() nachgeladen.
Ich benutze FLTK schon seit einigen Jahren. Aber der Anfang war sowohl bei Debian als auch bei Ubuntu etwas holperig. Das lag daran, dass beide Distris gegen libfltk.so linken wollen oder aber zu alt sind. Ich installiere FLTK seit dem immer aus dem Quelltext von der Projektseite. Da wird dann normalerweise der FLTK-Anteil immer statisch eingebunden, die Systembibliotheken jedoch dynamisch. Auf der Projektseite hatte ich damals ein Muster für ein entsprechendes Makefile gefunden. Das funktionierte bisher immer recht gut. Ich hatte meine Programme bisher immer auf Ubuntu Systemen entwickelt. Einmal hatte ich zu einem Linux-Treffen einen USB-Stick vorbereitet und durfte erstaunt feststellen, dass mein Programm sogar auf einem WeTab lief. Ein anderes Programm lief später, ohne Installation, auch auf Arch Linux. Ich vermute, das dass das gewünschte Verhalten ist. Ich kann die Installation aus dem Quelltext nur empfehlen, da man da immer aktuell ist und zudem auch viele Beispielprogramme bekommt, aus denen der Sinn einiger Methoden erst ersichtlich wird. Und da ich auch schon mal an einem BugFix mitgearbeitet hatte, kommt für mich sowiso keine andere Variante mehr in Frage.
Gerade eben habe ich FLTK mal kurz ausprobiert, weil ich es noch nicht kannte. In Ubuntu konnte ich es einfach via Synaptic ohne weiteren Aufwand installieren. Die Hauptschwierigkeit das "Hello World" ans Laufen zu bringen war statt einfach "gcc hello.cxx" fltk-config zu verwenden: fltk-config --compile hello.cxx Eigentlich ist das ganze hier beschrieben: https://stackoverflow.com/questions/53136185/fltk-box-element-not-visible-in-window Nun an eine Frage an euch: Kann man mit FLTK einen Graph zur Darstellung von Daten aus dem Mikrocontroller erzeugen?
Christoph M. schrieb: > Nun an eine Frage an euch: Kann man mit FLTK einen Graph zur Darstellung > von Daten aus dem Mikrocontroller erzeugen? Diese Frage kannst Du herunterbrechen: Kann man mit FLTK einen Graphen zur Darstellung von Daten erzeugen? https://www.fltk.org/documentation.php/doc-1.1/Fl_Chart.html (ein willkürliches, mit fünf Sekunden Google-Suche gefundenes Beispiel) Welchen Unterschied sollte es machen, ob die Daten aus einem Microcontroller, einer Datei oder von sonstwo kommen?
Harald K. >Kann man mit FLTK einen Graphen zur Darstellung von Daten erzeugen? >https://www.fltk.org/documentation.php/doc-1.1/Fl_Chart.html >(ein willkürliches, mit fünf Sekunden Google-Suche gefundenes Beispiel) Tja, heutzutage ist ja "ChatGPT", das ich die letzte halbe Stunde mal verwendet habe. Man kann sich darüber streiten, ob es das wirklich bringt. Im Anhang aber mal ein dynamischer Graph, der mit 100ms Sekunden update läuft. Zu compilieren mit fltk-config --compile graphDynamical.cxx Was jetzt fehlt, ist das Empfangen von Daten über die serielle Schnittstelle.
Der Grund meiner Frage nach dem Graphen war, dass der "Fast Light User-Interface Designer (FLUID)" keine Graph- oder Chartelemente anbietet. https://www.fltk.org/shots.php Das ist etwas schade, da Charts- und Graphen nun mal eine wesentliche Komponente technischer User-Interfaces sind. Ein weiteres Problem ist die Anbindung der seriellen Schnittstelle. Fast alle PC-Guis scheinen ein Problem damit zu haben.
> Ein weiteres Problem ist die Anbindung der seriellen Schnittstelle. Fast alle
PC-Guis scheinen ein Problem damit zu haben.
Da ist wohl was dran. Die serielle Schnittstelle brauchte ich bisher
nicht, aber dafür das Netzwerk Interface. Bisher hatte ich nur ein
Beispiel dafür gefunden und dafür sollte ich boost::asio installieren.
Da sollte auch die serielle Schnittstelle enthalten sein. Aber boost
scheint es nur komplett zu geben.
Daher habe ich mich dann direkt mit den Linux Systemfunktionen zergnügt,
obwohl mir viele davon abgeraten hatten. War sehr lehrreich.
P.s. Mein Eindruck ist, dass allgemein davon ausgegangen wird, man könne
nur das verwenden, was FLTK direkt anbietet. Aber man kann alles
verwenden, was das System hergibt. Man muss nur Makefile entsprechend
einrichten.
Im Bild ein Beispiel eines Linienschreibers für das LIDL PDM300-Multimeter. Es basiert auf dem Beispiel "NTSC Waveform Monitor Sim" von "Erco's FLTK Cheat Page" (https://www.seriss.com/people/erco/fltk/). Es erhält seine Daten vom Multimeter, mit 3 Messungen je Sekunde, über einen USB/Seriell-Wandler. Benutzt werden für die Übertragung keine FLTK-Methoden, sondern die Funktionen des Betriebssystems. Leider fehlt mir im Moment die Zeit das Programm fertig zu stellen, da ich mit einem anderen Projekt beschäftigt bin. Tom
Manfred M. >Beispiel dafür gefunden und dafür sollte ich boost::asio installieren. >Da sollte auch die serielle Schnittstelle enthalten sein. Aber boost >scheint es nur komplett zu geben. Das habe ich auch schon versucht zu compilieren. Da scheint aber auch "fltk-config --compile " zu versagen und man muss es wahrscheinlich irgendwie anpassen. >Daher habe ich mich dann direkt mit den Linux Systemfunktionen zergnügt, >obwohl mir viele davon abgeraten hatten. War sehr lehrreich. Hast Du dafür ein kurzes Codebeispiel. Wäre super, vielleicht kann man es einfach anpassen. Tom A. >Im Bild ein Beispiel eines Linienschreibers für das LIDL >PDM300-Multimeter. >Es basiert auf dem Beispiel "NTSC Waveform Monitor >Sim" von "Erco's FLTK Cheat Page" https://www.seriss.com/people/erco/fltk/ntsc-waveform-sim/ntsc-waveform-sim.cxx.txt Ich konnte es kompilieren und es sieht ganz nett aus, aber die serielle Schnittstelle fehlt. Hast Du einen Link auf den Linienschreiber?
Ich weis jetzt nicht wofür du ein Codebeispiel haben willst. Der Netzwerkclient hat ca 1700 Zeilen. Ich könnte zwar die Methode send_request() raus kopieren, aber dann fehlen viele Informationen. Ich fange mal mit dem Makefile aus meinem aktuellen Projekt an. Da kann man dann sehen, wie man auch so Dinge wie die clib2 einbinden kann (ca. 40 Zeilen habe ich raus gekürzt).
1 | CXX = $(shell fltk-config --cxx) |
2 | CC = $(shell fltk-config --cc ) |
3 | DEBUG = -g |
4 | CXXFLAGS = $(shell fltk-config --use-images --cxxflags ) -I. |
5 | CXXFLAGS += $(shell pkg-config --cflags glib-2.0) |
6 | LDFLAGS = $(shell fltk-config --use-images --ldflags ) |
7 | LDSTATIC = $(shell fltk-config --use-images --ldstaticflags ) |
8 | LDSTATIC += $(shell pkg-config --libs glib-2.0) |
9 | LINK = $(CXX) |
10 | DEPENDFILE = depend |
11 | |
12 | PROGDIR := /usr/local/bin/ |
13 | ICONDIR := /usr/share/pixmaps/ |
14 | DESKTOPDIR := /usr/share/applications/ |
15 | FILESDIR := /usr/local/share/vted/ |
16 | |
17 | TARGET = vted |
18 | OBJS = vted.o\ |
19 | File_Box.o\ |
20 | ImageBox_.o\ |
21 | ... |
22 | Unicode_Input.o |
23 | |
24 | SRCS = vted.cpp\ |
25 | File_Box.cpp\ |
26 | ImageBox_.cpp\ |
27 | ThumbBox.cpp\ |
28 | ... |
29 | Unicode_Input.cpp |
30 | |
31 | .SUFFIXES: .cpp .o |
32 | %.o: %.cpp |
33 | $(CXX) $(CXXFLAGS) $(DEBUG) -c $< |
34 | |
35 | .SUFFIXES: .c .o |
36 | %.o: %.c |
37 | $(CC) $(CXXFLAGS) $(DEBUG) -c $< |
38 | |
39 | $(TARGET): $(OBJS) |
40 | $(LINK) -o $(TARGET) $(OBJS) $(LDSTATIC) |
41 | |
42 | |
43 | depend: $(SRCS) |
44 | $(CXX) -MM $(SRCS) > $(DEPENDFILE) |
45 | -include $(DEPENDFILE) |
46 | |
47 | install: |
48 | install -s $(TARGET) ${PROGDIR} |
49 | @cp -u $(TARGET).png ${ICONDIR} |
50 | @cp -u $(TARGET).desktop ${DESKTOPDIR} |
51 | @mkdir -p $(FILESDIR) |
52 | @cp -u frame_mask.png $(FILESDIR) |
53 | @cp -u vted_splash.png $(FILESDIR) |
54 | @cp -u $(TARGET).cfg $(FILESDIR) |
55 | # |
56 | uninstall: |
57 | @rm ${DESKTOPDIR}$(TARGET).desktop |
58 | @rm ${ICONDIR}$(TARGET).png |
59 | @rm ${PROGDIR}$(TARGET) |
60 | @rm $(FILESDIR)frame_mask.png |
61 | @rm $(FILESDIR)vted_splash.png |
62 | @rm $(FILESDIR)$(TARGET).cfg |
63 | @rmdir $(FILESDIR) |
64 | |
65 | clean: |
66 | rm -f *.o vted |
Die Make Datei habe ich mir im Laufe der Jahre aus verschiedenen Beispielen zusammengebastelt. Da sind auch reine C-Module dabei, deshalb zwei Compiler. Und die Debug Info wird bei
1 | install -s |
enfernt. p.s. ich vergaß zu erwähnen, wo bei mir libfltk liegt: /usr/local/lib/libfltk.a
:
Bearbeitet durch User
Hallo Christoph. Ich habe dir das wesentliche aus dem PDM300-Programm zusammen kopiert. In "Schnittstelle suchen und konfigurieren" wird die durch ihren Namen angegebene Schnittstelle gesucht und mit den aufgeführten Parametern konfiguriert. Default ist ttyACM0 eingestellt, es könnte auch ttyUSB0 oder tty0 oder etwas anderes sein. Welche Schnittstelle du brauchst, musst du für dein System nachsehen und der Initialisierung in "strSio" übergeben. Da das PDM300 nur sendet ist nur eine Methode "ReadTelex" vorhanden, in der mit der Funktion "iNum = read(SPort, &cDaten[1], 9);" ein Telegramm vom Multimeter empfangen wird. Zum senden wäre es die Funktion "write". Es hilft sich zu erinnern, dass unter Linux alles eine Datei ist. Auch die Schnittstellen werden behandelt wie eine Datei. Sich mit den Grundlagen der seriellen Schnittstelle vertraut machen, hilft die Einzelheiten zu verstehen. Ich hoffe es hilft dir weiter. Tom
Danke für eure Code-Beispiele. Ich habe mal versucht, das Mulitmeter-Beispiel zu compilieren: fltk-config --compile FLTK-SIO.cxx Seltsamerweise wirft es sofort einige Fehler: FLTK-SIO.cxx:16:1: error: ‘strSio’ does not name a type 16 | strSio = "/dev/ttyACM0"; // Schnittstelle ACM0 voreinstellen Obwohl strSio in Zeile 12 definiert ist.
Christoph M. schrieb: > Seltsamerweise wirft es sofort einige Fehler: Das ist eine Zuweisung außerhalb einer Funktion. Kann es sein, daß Dir ein paar Grundlagen in C bzw. C++ fehlen?
Hallo Christoph. Das Beispiel ist kein Programm zum kompilieren, sondern eine zusammenkopierte Reihe an Codestücken die du, an den jeweils richtigen Stellen, anpassen und in dein Programm einbauen kannst. Die Beispiele zeigen nur den Umgang mit der seriellen Schnittstelle. Echten Quellcode für Programme kann man in diesem Forum leider nicht veröffentlichen. Wenn man keine end- und fruchtlosen Diskussionen um Kaisers Bart haben möchte, darf man keinen Schaltplan, kein Platinenlayout und keinen Quellcode zeigen. Gruß. Tom
>Das Beispiel ist kein Programm zum kompilieren, Danke, das habe ich leider zu spät gesehen. >Echten Quellcode für Programme kann man in diesem Forum leider nicht >veröffentlichen. Wenn man keine end- und fruchtlosen Diskussionen um >Kaisers Bart haben möchte, darf man keinen Schaltplan, kein >Platinenlayout und keinen Quellcode zeigen. Da hast Du recht, das Forum ist oft etwas nörgelig. Es gibt ja keinen perfekten Quellcode, deshalb kann man auch immer meckern. Ich versuche immer trotzdem die Beispiele vollständig und kompilierbar zu halten ( inclusive Compilier-Command Line) wie im Beispiel oben: Beitrag "Re: FLTK statisch linken" Das sollte bei jedem Linux-Rechner einfach so laufen.
Hallo Christoph Ich habe dir eine Mail, mit dem vollständigen Quellcode des Multimeterprograms, geschrieben. Ohne die Hardware startet es nicht, aber es zeigt dir die nötigen Schritte im Zusammenhang. Es ist ein FLTK Programm. Viel Erfolg. Tom
Hier noch ein Link zum Programm hier im Forum: Beitrag "Re: Interface für Parkside PDM-300 Multimeter" Da steht ein wenig beschrieben, wie es aufgerufen wird und funktioniert.
Tom A. schrieb: > Echten Quellcode für Programme kann man in diesem Forum leider nicht > veröffentlichen. Wenn man keine end- und fruchtlosen Diskussionen um > Kaisers Bart haben möchte, darf man keinen Schaltplan, kein > Platinenlayout und keinen Quellcode zeigen. Das ist natürlich Quatsch, sofern man keinen besonders abnormen Programmierstil hat, oder sehr grobe Schnitzer in seinen Code eingebaut hat.
> Das ist natürlich Quatsch, sofern man keinen besonders abnormen Programmierstil
hat, ...
Hier habe ich so etwas noch nicht erlebt, aber ein anderen Foren schon.
Der eine sagt, man soll lange und aussagekräftige Namen verwenden.
Gleichzeitig soll die Zeilenlänge 80 Zeichen nicht überschreiten.
Wieder andere verlangen das die geschweiften Klammern immer eine eigen
Zeile belegen sollen. Ich finde das Quatsch, weil dadurch der Lesefluss
unterbrochen wird (Bildschirme sind dafür nicht hoch genug). Oft wird
man auch dafür kritisiert, dass man bestimmte Befehle oder Methoden
verwendet oder nicht verwendet.
Bei ubuntuusers.de wurde ich mal z.B. nur dafür runtergemacht, weil ich
eine Funktion selber programmieren wollte, die in einer Lib bereits
vorhanden war (das Rad neu erfinden u.s.w.). Aber wie soll man dann
Programmieren lernen, wenn man sich nicht an praktischen Problemen
ausprobiert?
Tom A.
>Ich habe dir eine Mail,
Ging leider nicht. Ich habe Dir mal eine PN geschrieben.
Tom A. >Habe dir die Mail an die andere Adresse geschickt Vielen Dank dafür. Nach einigen Mühen konnte ich das Programm kompilieren. Ich habe leider kein "Multimeter PDM-300-C2", deshalb habe ich es mit einem Arduino simuliert. Der Arduino kann damit als vermutlich etwas ungenauerer Ersatz der Spannungsmessung des Multimeters benutzt werden: Beitrag "Multimeter PDM-300-C2 Simulator" Vielleicht hat mal jemand Lust, es zu testen :-)
Gratuliere! Die serielle Schnittstelle ist gar nicht so schwer zu benutzen. Wenn man es einmal verstanden und gemacht hat geht es auch in künftigen Projekten gut. Weiterhin viel Erfolg. Tom
Da das veröffentlichen von Quellcode hier im Forum zu nichts führt, halte ich mich damit sehr zurück. Das bedeutet aber nicht, dass die benötigten Funktionen der seriellen Schnittstelle ein Geheimnis sind. In diesem Beitrag: Beitrag "Re: FLTK statisch linken" ist im Anhang "FLTK-SIO.cxx" eine Sammlung von Funktionen zum Umgang mit der seriellen Schnittstelle in C/C++ zu finden. Tom
Tom A. schrieb: > Da das veröffentlichen von Quellcode hier im Forum zu nichts führt, > halte ich mich damit sehr zurück. Das ist, auch wenn es wiederholt wird, schlicht und einfach nicht wahr.
Du erklärst hier deine Meinung einfach mal schnell zur Wahrheit? gewagt Es ist, auch wenn ich mich wiederhole, wahr! Und jetzt? Jetzt haben wir zwei sich widersprechende Wahrheiten. Wie gesagt - es führt zu nichts.
:
Bearbeitet durch User
Tom A. schrieb: > Es ist, auch wenn ich mich wiederhole, wahr! Aha. Hunderte, wenn nicht gar tausende Threads, in denen Leute ihren Code präsentieren, sei es unter "Projekte & Code" oder sonstwo, sagen was anderes.
Tom A. schrieb: > Du erklärst hier deine Meinung einfach mal schnell zur Wahrheit? gewagt Das tust du aber ebenfalls. > Wie gesagt - es führt zu nichts. Wenn jemand deiner Behauptung widerspricht, dass das Posten von Code hier nichts bringe, ist das kein Argument, das für selbige Behauptung spricht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.