theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Mon Oct 28, 2019 11:28 am

Hallo in die Runde!

ich möchte hier mal einen neuen Thread eröffnen, der ein komplexes und schwieriges Thema anschneidet. Ich suche Hilfe und Tipps beim Aufbau einer funktionsfähigen "Toolchain" (kann man das so sagen?), um eine bestimmte Anwendung (linphone) für den raspberry Pi 4 unter Buster neu zu bauen. linphone ist freie Software und funktioniert super! Man kann damit eigene SIP-Telefone aufbauen inklusive Anruferliste, Videotelefonie und Konferenzschaltungen. Leider ist der Desktop-Client nicht so super...

Ich habe zwar einge Erfahrungen in der Softwareentwicklung (Pascal, PHP, Ruby, ASM utc.), aber nicht mit C++ und Linux (sondern nur mit C++ auf der ESP-Familie), so dass ich hiermit ein unbekanntes Land betrete.

Als Entwicklermaschine verwende ich ein Windows 8.1 Prof x64-System mit 16 Kernen unter Visual Studio 2019 Community (im Weiteren nur noch VC19C genannt). Es ist mir nun schon gelungen, zwei exemplarische Anwendungen (eine Linux-Konsolenanwendung und ein CMake-Projekt) für den Raspi 4 unter VC19C zu bauen. Beide laufen nach der Compilation des Codes unter WIndows x64 auf dem Raspi 4.

Allerdings ist das Crosscompiling viel Komplizierter als gedacht und ich benötige (neben dem Selbststudium) auch Tipps und Hilfe von erfahrenen C++Entwicklern.

Ist da jmd. bereit, mitzumachen?

Vielleicht bringt dieses Topic auch ein Zugewinn für zukunftsweisende Entwicklungsbemühungen um den Raspi?

Wobei benötige ich jetzt grundlegende Hilfe?

Meine Zielsetzung ist es, die prima für den raspi zugeschnittene Application linphone zu bauen und den Desktop-Client, eine Qt-Anwendung, (kann man das bei Linux so nennen?) zu überarbeiten!

Dazu habe ich mit meinem jetzigen Kenntnisstand einige Annahmen gemacht, die ich den Experten nachfolgend erst einmal zur Diskussion stellen möchte (sind nämlich diese Annahmen falsch, dann muss ich mein Vorgehen neu überdenken):

  1. Meine Annahme: das Projekt lässt sich prinzipiell crosskompilieren, warum?: der Anbieter des Repositories macht das scheinbar auch so, siehe Readme.md im Repository und für einen Build auschecken https://gitlab.linphone.org/BC/public/linphone-sdk. Das checkout hat bei mir funktioniert,
  2. Es handelt sich um ein CMake-Projekt, dass jedoch nicht mit VS19C, sondern mit VS.15.2017 erstellt wurde. Meine Annahme: ist, dass das prinzipiell auch mit VS19C gehen muss. Wenn nein, bitte Einwände anbringen und begründen.
  3. Die prerquisites alias Build dependencies scheinen mir mit meinem Erfahrungsstand etwas schräg. Wozu benötigt man in einer Compilersprache wie C++ noch nasm, yasm, python pystache und python six sowie. Diese tools sind teilweise veraltet und werden gar nicht mehr gepflegt. Meine Annahme:: Das geht möglw. mit VC19C eleganter??
  4. Ich habe die Build dependencies wie vorgeschrieben auf meiner Entwicklermascine installiert, aber danach bemerkt, dass dass bei VC19C (zumindest weitgehend) gar nicht mehr nötig ist. VC19C unterstützt beispielsweise sogenannte Virtuelle Python-Umgebungen, so dass man für jedes CMake-Projekt eine eigene isolierte Python-Umgebung konfigurieren kann. Das hat auch geklappt und CMake liest die Quellen korrekt ein. Meine Annahme: auch die Abhängigkeiten von anderen Tools wie yasm, nasm und Mustache lässt sich möglw. besser handhaben?
Ich möchte das erste Posting hier erst einmal soweit belassen. Es stellen sich mir viele weitere Fragen. Vielleicht genügt das vorerst einmal...

Ich freue mich auf Antworten.

Viele Grüße vom
Theo

EDIT: Ich habe gerade noch das hier gefunden. Vielleicht sagt das mline was? Ich muss es erst einmal durcharbeiten.

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Tue Oct 29, 2019 4:26 pm

Hallo theobald,

wir müssen jetzt erstmal klären machst du mit deine Test Projekten wirklich Crosscomplie also wir auf deiner Machine Compiliert oder Überträgt VS den Code und Compiliert es dann auf dem PI ?

Nach meine Wissen geht nur das Letztere unter VS19 mit Windows 8.

CMake-Projekte kann man eigentlich nicht mit Compiler X erstellen. CMake sucht sich Compiler und die Abhängigkeiten zusammen dafür ist es ja da.
Include Pfade und so an zu passen. CMake ist ein Build system.

Mit dem Commandline Parameter -G "Visual Studio 14 2015 Win64" kannst du sagen was du zum Bauen verwenden möchtes.
So würde jetzt CMake versuchen eine VS2015 Solution zu erstellen und diese dann mit msbuild zu bauen.

yasm oder nasm sind Assembler und ich kann mir gerade dort vorstellen das man die noch braucht den es ist wie es ist Assembler mach den schnellesten Code. Auch ist der Inline Assembler von C++ noch nie wirklich Crosscompile fähig gewesen. Ich nehme an das Assembler für die Codex verwendet wird.

Python wird in machen Projekten dafür verwendet um Code Dateien oder andere Dinge zu Generieren wären des Build vorgangs.

Ich weiß nicht wo https://gitlab.linphone.org/BC/public/linphone-sdk hier was von Cross Compile siehst ich sehe da nur das man unter Windows Compilieren kann.

Aber was willst du den Jetzt machen das SDK verwenden ? Die Desktop Client umschreiben ?

Vielleicht sollen wir erst mal versuchen eine Anwendung mit QT auf dem PI per VS2019 zu bauen und dann sich mit dem Mega ding beschäftigen.
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Tue Oct 29, 2019 7:38 pm

Hallo und vielen Dank für Deine Antwort und die Zeit die Dur Dir nimmst..

also vielleicht ist es gar nicht nötig, das gesamte SDK zu bauen. Ich bin davon ausgegangen, dass das SDK dann eine Datei erzeugt, die man mit apt-get installieren kann. Ich habe da aber noch keine Erfahrung. Das ist doch eine *.so-Datei? Wie dem auch sei.

Wenn man also die Desktop-Applikation (keine Ahnung wie man das unter Linux nennt, unter Windows wäre es eine MFC WindowApplication) alleine ändern oder neu aufbauen möchte, dann würde das auch erst einmal genügen.

Aber jetzt zu Deinen Fragen:
wir müssen jetzt erstmal klären machst du mit deine Test Projekten wirklich Crosscomplie also wir auf deiner Machine Compiliert oder Überträgt VS den Code und Compiliert es dann auf dem PI ?
Wie kann ich das herausfinden? Bei der von VS2019C angebotenen LinuxConsoleApp sieht man nur, dass VS2019C etwas compiliert, dann führt es ein rsync zum Target aus (ein Ordner unter home/pi/.vs/) aus und dann startet die App auf dem raspi. Das sehe ich über ein Linux Konsolenfenster. Das Konsolenfenster wäre wohl nicht nötig, wenn die App auf der lokalen Maschine liefe? Ist diese Annahme korrekt?
Nach meine Wissen geht nur das Letztere unter VS19 mit Windows 8.
OK das verwende ich... Visual Studio 2019 Comunity x64 unter Win 8.1x64 Prof
CMake-Projekte kann man eigentlich nicht mit Compiler X erstellen. CMake sucht sich Compiler und die Abhängigkeiten zusammen dafür ist es ja da.
Include Pfade und so an zu passen. CMake ist ein Build system.
OK. Ein sehr wichtiger Hinweis für mich. Danke! Also könnte man durch das Ändern der CMake Files den Build-Prozess beeinflussen?
yasm oder nasm sind Assembler und ich kann mir gerade dort vorstellen das man die noch braucht den es ist wie es ist Assembler mach den schnellesten Code. Auch ist der Inline Assembler von C++ noch nie wirklich Crosscompile fähig gewesen. Ich nehme an das Assembler für die Codex verwendet wird.
Ja das dachte ich mir schon. Habe auch vor langer Zeit mal MASM programmiert. Aber vielleicht kann ich mir die sehr maschinennahe Arbeit sparen. Es wird ohnehin sehr unübersichtlich in die Tiefen der Codecs abzutauchen. Das sollte man vielleicht nicht antasten?! Ist auch nicht nötig für den Desktop am Unterbau zu schrauben.
Python wird in machen Projekten dafür verwendet um Code Dateien oder andere Dinge zu Generieren wären des Build vorgangs.
Prima. Schon wieder was dazugelernt. Ich habe mich gewundert, wozu man Sprachen anhäuft. Das wird doch unübersichtlich. Wenn CMake ein Build steuert, warum überlässt man dann nicht CMake den Part den Python übernimmt?
Ich weiß nicht wo https://gitlab.linphone.org/BC/public/linphone-sdk hier was von Cross Compile siehst ich sehe da nur das man unter Windows Compilieren kann.
Ok, das kann sein. Ich bin aufgrund nachfolgender Notiz davon ausgegangen, dass ein Crosscompiling stattfindet/möglich ist:

steht im Abschnitt "Build" unten rechts bezüglich CMake target platform:
LINPHONESDK_PLATFORM: The platform for which you want to build the Linphone SDK. It must be one of: Android, IOS, Raspberry or Desktop (default value).
Also wie könnte man das verstehen, wenn Raspberry oder Desktop default Plattformen sind? Die Build-Maschine ist doch selten der raspi bei so einem großen Projekt. Ich habe hier angenommen, der build läuft unter Linux resp. Windows Visual Studio. Handelt es sich dann nicht crosscompiling wenn die Windows Maschine mit x64 Plattform Code für ARM baut?
Aber was willst du den Jetzt machen das SDK verwenden ? Die Desktop Client umschreiben ?
Genau das triffts! Also zuerst ist mein Ziel, den Desktop-Client neu zu schreiben oder anzupassen. Ich bin auch hier davon ausgegangen, dass das nur geht, wenn man die gnaze Suite / das sog SDK neu baut. Aber dass muss ja nicht sein. Jedoch habe ich keine Antwort auf die daraus folgende Frage, wo sich der Client Quellcode befindet und wie man den einzeln baut und ersetzt. Es ist eine Qt-Anwendung.
Vielleicht sollen wir erst mal versuchen eine Anwendung mit QT auf dem PI per VS2019 zu bauen und dann sich mit dem Mega ding beschäftigen.
Klar gern! Wie geht das?

Ich möchte nochmal kurz beschreiben, was ich bisher erreicht habe:
1. Ich habe mit Hilfe des in VS219C enthaltenen git clients das Projekt auf meine SSD geclont,
2. Ich habe die Build dependencies eingerichtet, soweit ich das konnte, also nasm und yasm installiert, eine virtuelle Python Umgebung eingerichtet, Doxygen installiert etc
3. dann öffne ich indirekt ein CMake Projekt, nicht durch "neues CMake-Projekt", sondern durch Öffnen->CMake->open CMakeLists.txt
4. wenn er diese Datei öffnet, dann rödelt er ca. 60sec und indiziert ca. 27.500 Dateien
5. vormals hat er CMake Error ausgegeben, die Python, Doxygen, nasm und yasm betrafen, das konnte ich schrittweise beheben
6. jetzt stopt das indexing (das ist wohl noch kein compiling, sonden ein pre-build lauf?) mit dem Fehler:
Image
was hat denn das gitTag mit dem Build- oder CMake-Prozess zu tun?? Ich kann das gitTag ja nicht ändern - oder?

Ich möchte nochmal zusammenfassen
Was will ich erreichen:
1. Ich will - wenn möglich - den Dektop-Client neu schreiben. Programmieren kann ich, jedoch habe ich keine Erfahungen mit so großen Bibliotheken oder Projekten.
2. Ich will einen möglichst kurzen Entwicklungs-Zyklus auf meiner Windows-Maschine realisieren. Die ist sehr schnell und ich möchte (wenns geht - ich habe keine Ahnung) nicht immer zum raspi wechseln, dort 30min compilieren, dann den Quellcode wieder auf dem Windows-System bearbeiten, dann wieder 30min auf dem raspi compilieren - da wird man nie fertig... vielleicht gibt es da eine elegante Lösung?

Soweit fürs Erste.
Es ist eine Menge - ich weiss.
Aber vielen Dank für Deine Antwort!

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Wed Oct 30, 2019 8:14 am

Hallo Theobald,

mal sehen ob ich das alles schaffe. Ist schwer per Text.

Ja eine .so datei ist quasi das selbe wie eine .dll unter Windows.

Ja CrossCompile ist wenn eine Machine Code erstellt die für einen Anderen Processor ist. Das Kennst du schon vom ESP dort läuft der Compiler unter Windows ist allso Windows Code aber das Ergebniss ist das was auf dem ESP läuft und dann dort hin übertragen wird. Vorteil und wichtiges Unterschied auf dem Ziel System gibt es kein Betriebssystem.

Es gibt jetzt ein paar Compiler die unter Windows laufen und Code für den AMR erstellen können. Aber das reicht ja nicht sonst müsste man selbst für einfache Datei System Zugriffe alles selbst machen. Kennt man zum Beispiel beim Adurino die Lips werden nämlich im source geliefern und dann mit Compiliert.

LINPHONESDK_PLATFORM verstehe ich so das ein Hinweis für Code und CMake wie etwas zu bauen ist auf einem PI heiß eine die so datei anders als auf einen Standard Linux oder es können Treiber eingebunden werden die auf einem PI immer da sind. Bei der SDL2 zum Beipiel aber auch bei der QT wird mit so eine Parameter gesteuert das der Video Treibe vom PI eingebunden wird was das verwendet des X Servers unötig mach um die Graphische Oberfläche zu machen weil direkt mit der Hardware geredet wird (Treiber).

Und jetzt wird das Problem hoffentlich klar der Treiber / die so Datei muss da sein sonst fällt der Compiler auf die Nase. Auch wenn die so Datei nicht laufen kann auf dem Host System. Sprich alle Libs die zum Compileren gebraucht werden muss CMake auf deiner Platte finden und dem Compiler sagen wo sie sind.

Ich würde gerne weiter schreiben muss aber jetzt was anderes machen.

Noch kurz zu deine Fehlermeldungs Bild:
ich schätze das du den Master abgerufen hast das ist nicht sinvoll bei dem was du vor hast der Master ist die Entwicklungsversion die nicht unbediengt Stabil ist. Du willst das das SDK ja nicht weiter Entwicklen sondern "nur" Nutzen deshlab würde ich dir dringen empfehlen ein Release ab zu rufen.

git checkout release/4.3 sollte Funktionieren.

Wie die Prüfung da genau funktioniert habe ich jetzt auf die Schnell nicht verstanden.

https://gitlab.linphone.org/BC/public/l ... tils.cmake
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Wed Oct 30, 2019 11:52 am

Danke für die Tipps! Besonders für das Checkout der Release. Ich dachte bisher wirklich, man muss den master auschecken, um aktuell zu sein. Ich werde jetzt mal die Release 4.3 holen und dann berichten.

Zudem verfolge ich noch den Weg über den Python Wrapper. Ich bleibe dran...

Auch versuche ich mich in Zukunft kürzer zu fassen :D

Viele Grüße.
Theo

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Thu Oct 31, 2019 7:44 am

Also wenn du zu Python wechsels bin ich raus.

Ja der Master ist immer das Aktuellste aber eben oft auch nicht das Letzte Getestet und so mit Released.
Wenn ich also nicht was dran ändern will sondern nur Nutzen dann sollte ich immer nach einen Release gucken.
Das aber nicht bei allen Projekten mit GIT so, es gibt mehr als einen Konzept wie man mit Git umgeben kann.

Du könntest auf dem PI im Verzeichnis vom VS mal gucken wenn dort obj files rum liegen könnte es gut sein das du bzw. VS auf dem PI Compiliert.

Nur so neben bei
https://linphone.org/technical-corner/liblinphone
da kann man die Windows Version gebaut runter laden die Läuft Natürlich nicht auf dem PI aber zum Api Lernen ist das sicher viel einfacher.

Den ganz ehrlich ist schon ein Moster Projekt was du dir da vergenommen hast. eine Riesen Api und dann noch Crosscompile und so.

Überlege dir doch mal ob es keine Möglichkeit für dich ist:
Oracle Virtual Box auf deinen PC dort eine Debian drauf.
Dann ein mal das SDK auf dem PI Bauen auch wenn es Tage dauert.

dann mit
cd /home/punky/x-tools/rpiroot
rsync -rl --delete-after --safe-links --ignore-errors pi@192.168.2.50:/{lib,usr} .
cd /home/punky/x-tools/rpiroot/opt/vc/
rsync -rl --delete-after --safe-links --ignore-errors pi@192.168.2.50:/{opt/vc/lib,opt/vc/include} .

Die Verzeichnisse auf den Virtuell PC holen.

dann kannst du wenn du CMake ein Tool chain File mit gibts (https://cmake.org/cmake/help/latest/man ... ins.7.html)
Samle https://bitbucket.org/numberfive/sdl2gu ... yPi2.cmake

Mit dem gcc für arm den Debian mit bringt relativ einfach dein Projekt wirklich auf dem Rechner bauen.

So mache ich das als IDE nehmen ich VS Code das lässt sich unter Debian auch recht leicht Installieren und Aktuell halten.
Bis auf das ich Oracle Virtual Box nicht mehr verwende habe jetzt einen eigenen PC für das Debian.

So kann ich auf dem PC die Software laufen lassen und auf dem PI. Das sollte auch mit QT Funktionieren der Unterschied zum selbst bauen der QT ist das auf dem PI nur mit XORG läuft (die die Debian ausliefert). Und in meinem Projekt will ich den nicht haben.

Ob das jetzt in deinem Projekt das wichtig ist oder nicht weiß ich nicht. Bis jetzt weiß ich ja nur das du eine GUI für ein SIP Phone bauen willst. Warum die GUI zwingen auf dem PI laufen soll weiß ich nicht.
Auch weiß ich nicht warum es linphone sein muss es gibt noch mehr SIP Libs da draußen.
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Thu Oct 31, 2019 5:16 pm

Hallo DerKleinePunk,

vielen Dank für die große Menge an Informationen. Ich komme gar nicht nach... das sind natürlich viele Tipps denen ich gern nachgehe.

Zuerst einmal die Frage: Kann ich den Titel des Threads hier ändern? Der führt ja etwas in die Irre...

Fangen wir mal von Ende her an:
Ob das jetzt in deinem Projekt das wichtig ist oder nicht weiß ich nicht. Bis jetzt weiß ich ja nur das du eine GUI für ein SIP Phone bauen willst. Warum die GUI zwingen auf dem PI laufen soll weiß ich nicht.
Auch weiß ich nicht warum es linphone sein muss es gibt noch mehr SIP Libs da draußen.
OK. Ich möchte mir schon seit langem ein (oder mehrere) SIP-Telefone auf der Basis des Raspi bauen. Dazu möchte ich ein eigenes GUI entwickeln, das so aussieht, wie ich es möchte und das ich auch leicht erweitern kann (Videotelefonie, MySQL-Anbindung). Es soll auf einen 10" Touchscreen zugeschnitten werden. Der ist nämlich ungefähr so hoch wie ein Telefonhörer. Es könnte so aussehen wie dieses hier.

Es muss nicht unbedingt linphone sein. Mit linphone habe ich begonnen, weil es jetzt ausführlich in RaspberryGEEK 11/12-2019 vorgestellt wurde. Da habe ich es installiert und es läuft auf anhieb. Das ist für mich immer ein Zeichen, dass die Software ganz gut ist. Ich hatte linphone aber schon einmal vor einem Jahr in der Mache. Jetzt auf dem Pi 4B mit 4GB läuft das aber alles schneller.

Aber ich lerne gern dazu. Wenn Du eine leicht integrierbare SIP-Bibliothek für den Raspi kennst, dann schaue ich mir die gern an. Und wenn die über irgend eine GUI Bibliothek auch relativ übersichtlich zu programmieren ist, dann nehme ich mir gern C++ zu Herzen. Besser wäre natürlich eine Sprache, mit der man kurze Entwicklungszyklen haben kann.
Ja der Master ist immer das Aktuellste aber eben oft auch nicht das Letzte Getestet und so mit Released.
Wenn ich also nicht was dran ändern will sondern nur Nutzen dann sollte ich immer nach einen Release gucken.
Das aber nicht bei allen Projekten mit GIT so, es gibt mehr als einen Konzept wie man mit Git umgeben kann.
Ich bin leider noch nicht dazu gekommen, diese Release auszuchecken. Ich arbeite auch mit github, aber checke dort nur Javascript-Projekte ein. Das ist auch alles nicht so komplex wie C++.
Du könntest auf dem PI im Verzeichnis vom VS mal gucken wenn dort obj files rum liegen könnte es gut sein das du bzw. VS auf dem PI Compiliert.
Das finde ich im Projektverzeichnis der Linux-ConsolenApplication auf dem Raspi (Target im VS2019C ist ARM)

Code: Select all

pi@raspberrypi:~ $ sudo ls -l projects/ConsoleApplication2/obj/ARM/Debug/
insgesamt 8
-rw-r--r-- 1 pi pi 7116 Okt 31 14:44 main.o
Ich denke mit meinen geringen C-Kenntnissen, dass es sich um eine Objektcode-Datei handelt...?
Den ganz ehrlich ist schon ein Moster Projekt was du dir da vergenommen hast. eine Riesen Api und dann noch Crosscompile und so.
Ja da hast Du Recht! Möglw. geht das auch nicht so, wie ich mir das gedacht habe bzw. ist es zu anspruchsvoll für jmd. wie mich, der keine umfassenden C++ Kenntnisse hat. Aber der Weg ist das Ziel. Vielleicht komme ich meinem Ziel auch auf andere Weise näher. In der Softwareentwicklung ist das vorher nicht immer klar, welcher Weg der günstigste ist.
Überlege dir doch mal ob es keine Möglichkeit für dich ist:
Oracle Virtual Box auf deinen PC dort eine Debian drauf.
Dann ein mal das SDK auf dem PI Bauen auch wenn es Tage dauert.
Danke! Das ist ein sehr freundlicher Tipp. Daran habe ich auch schon gedacht. Das kommt natürlich durchaus in Frage. Mein i7-5960X hat genug Kapazität um zu virtualisieren. Das geht unter Win 8.1 auch von Hause aus. Ich brauche eigentlich keine Fremdsoftware von Oracle.

OK. Das mit dem rsync habe ich noch nicht genau durchschaut, aber ich denke, ich soll bestimmte Verzeichnisse auf die virtuelle Debian-Maschine holen und dort kompilieren. Das schaue ich mir mal an...
So mache ich das als IDE nehmen ich VS Code das lässt sich unter Debian auch recht leicht Installieren und Aktuell halten.
OK. Ist VS Code nicht weitgehend identisch mit Visual Studio 2019 Community?

Also soweit erst einmal für heute!
Vielen Dank nochmal für Deine Zeit.
Ich setze mich jetzt nochmal ran, und versuche einige der o.g. Aufgaben zu lösen.

Viele Grüße.
Theo

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Fri Nov 01, 2019 7:28 am

Hallo theobald,

nein VSCode ist im gegen Satz zu VS2019 eigentlich nur ein Programmierbarer Editor und sieht auch anders aus. Du kannst das auch unter Windows Installieren da siehst du auch den massiven Unterschied. Aber es gibt ein Haufen Addons die dir dann das Thema von Compiler einbinden und der gleichen abnehmen. Sprich du kannst die GUI selbst zusammen bauen.

Ein kleines Achtung gibt es VSCode ist nichts für Maus Fetischistischen da muss man Tasten Kürzel lernen um schnell zu sein.
Wobei man in VS per Menü auch nicht mehr schnell ist gerade wenn man ein paar Addons installiert hat. Schaffe jeden Tag damit...

Die Komplexität hängt nicht nur an C++ hier sondern an den Abhängigkeiten die hast du in anderen Programmiersprachen auch. Was ich jedoch zugeben muss das dort die Verwaltung mit unter etwas leichter ist. Um ein krasses Beispiel zu nehmen in Javascript kann ich oben einfach eine Link eintragen und habe dann meine Depency der Browser macht den Rest und lädt sie runter.

Thema RSync:
nein nicht ganz verstanden. Ich baue die Libs auf dem PI das ergbnis der Lips laden in den Verzeichnissen und dann hole ich dir mir. Dann kann ich meine Software auf dem PC bauen und der Compiler findet das was er braucht in den Verzeichnissen. Habe also das Lange warten nur wenn ich eine neue Version der Libs baue was auch bei dir nicht so oft vorkommen sollte.

Ich möchte hier auf keine Fall über Programmiersprachen Diskutieren das würde alles nur noch mehr zerfeldern und Stränge aufmachen und wir kommen nicht weiter. Eine weiter Möglichkeit wäre auch Dot Net Core wo bei ich nicht weiß ob es dort schon Framework für GUI's gibt. WPF gibt es unter Linux noch nicht das weiß ich. Es gibt oder gab auch eine Lib von Linphone dafür aber ich meine die wird nicht mehr gepflegt.

C++ ist mit Sicherheit nichts wo man ganz schnell zu einen greibaren erfolg kommt. Aber es hat die gerinsten system anforderung wenn man ein bisschen aufpasst. Dummen Code kann man in jeder sprach schreiben.

Wenn du aus der Javascript welt kommst könnte man auch über Node und und einen Browser als GUI nach denken. Aber auch da wäre ich dann raus.
https://github.com/Arthie/CarPC das ist so eine Lösung was ich meine leider finde ich gerade nicht die HP zum Code. Der hat halt das Problem das er den 3er übertaken muss das läuft. Meine Software läuft auf dem 2er ohne Probleme. Mein Thema ist das selbe. Deshalb finde du auch so viele CarPC links in meinen Antworten.

Eine SIP Lib kann ich dir nicht empfehlen da ich das bis jetzt noch nicht gebraucht habe. Auch ist die Frage ob du nur SIP machen willst Linphone kann ja auch ein bisschen drum rum. Auch ist die Frage was der Server sein soll eine Fritzbox ? oder Alles ? Ist es für dich oder die Welt ?

Ich denke es ist an der Zeit das du dich entscheidest und randsachen festlegst sonst Tippen wir uns hier noch die Finger krum.

Eines noch so ein Telefon zu bauen könnte dann irgend wann noch auf Hardware raus laufen es seiden du Willst nur ein USB Headset anschliesen und gut. Du weißt der PI hat keinen Micro Eingang.

So jetzt muss ich mal um mein Projekt kümmern.
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Fri Nov 01, 2019 4:09 pm

Hallo DerKleinePunk,

ja ich habe VSCode bei mir auch installiert, weil ich ab und zu Unity damit entwickle.
Ich möchte hier auf keine Fall über Programmiersprachen Diskutieren das würde alles nur noch mehr zerfeldern und Stränge aufmachen und wir kommen nicht weiter. Eine weiter Möglichkeit wäre auch Dot Net Core wo bei ich nicht weiß ob es dort schon Framework für GUI's gibt. WPF gibt es unter Linux noch nicht das weiß ich. Es gibt oder gab auch eine Lib von Linphone dafür aber ich meine die wird nicht mehr gepflegt.
Klar - kein Problem. Habe ich irgendwo was zu Programmiersprachen geschrieben? Es geht doch um Umgebungen... oder?

Ich habe jetzt auch eine etwas zurückhaltende Antwort von der linphon-developer-mailinglist bekommen. Die schreiben, es gibt kein Crosscompiling für das ganze Paket. Man kann VS2019C nicht verwenden. Man soll dirket auf dem Raspi bauen und es gibt einen beta python-wrapper. Das muss ich alles einzeln mal durchgehen...
Eine SIP Lib kann ich dir nicht empfehlen da ich das bis jetzt noch nicht gebraucht habe. Auch ist die Frage ob du nur SIP machen willst Linphone kann ja auch ein bisschen drum rum. Auch ist die Frage was der Server sein soll eine Fritzbox ? oder Alles ? Ist es für dich oder die Welt ?
Schade - mit den SIP Bibliotheken.
Mir genügt vorerst die Fritz!Box. Das funktioniert bisher einwandfrei.
Ich hätte keine Probleme damit, Code freizugeben. Also es kann durchaus für alle sein. Aber bis wir davon reden können, vergehen wohl noch Jahre :D .
Ich denke es ist an der Zeit das du dich entscheidest und randsachen festlegst sonst Tippen wir uns hier noch die Finger krum.
Nun. Nein und Ja. Wozu sollte ich mich jetzt entscheiden? Ich suche ja gerade noch einen Weg der effizient ist. Bisher ist für mich noch völlig unklar, in welcher Weise genau das linphone-sdk gebaut werden muss, um den Dektop-Client zu modifizierten. Das muss ich noch erarbeiten.

Gern gehe ich aber auch den Weg über den Python Warpper. Zurzeit bekomme ich den aber noch nicht zum Laufen und es gibt auch einen neuen (wrapper) beta für python3. Den habe ich noch gar nicht ausgecheckt. Wenn ich den angesehen habe, dann kann ich was sagen.

Eine Lösung wird sich also nicht in 4 Wochen finden lassen.

Und. JA. Wir tippen uns bestimmt die Finger wund. Das Thema ist ja umfangreich und ich habe hier schon einiges dank Deiner Hilfe gelernt. Genau dazu ist ja ein Forum da.
Eines noch so ein Telefon zu bauen könnte dann irgend wann noch auf Hardware raus laufen es seiden du Willst nur ein USB Headset anschliesen und gut. Du weißt der PI hat keinen Micro Eingang.
Also das sollte das geringste Problem sein. Ich habe als Hardware-Ingenieur angefangen und kann Schaltungen entwickeln, Leiterplatten entwerfen und testen und Prototypen bauen. Ich habe mir schon eine Wetterstation mit dem ESP gebaut und dabei alles selbst gemacht. Der Prototyp läuft einwandfrei. Aber ich möchte es nicht verschweigen - es kostet viel Zeit und Ausdauer.

Also ich habe einen Pi 4B hier, der läuft mit linphone als Telefon einwandfrei. Da ist ein einfacher USB Telefonhörer dran. Der wird von linphone und Buster sogar automatisch erkannt und ich kann in bester Sprachqualität damit telefonieren. Habe ich ausprobiert, indem ich einfach mit Freunden darüber telefoniere. Nur halt die Desktop-Application ist nicht der Bringer. Da könnte man noch vieles verbessern... und der angeschlossene 20"-Touch-Screen ist unmöglich :D - aber prima zum Testen.

Aber auch heute - vielen Dank für Deine vielen Hinweise.

und jetzt werde ich mir mal Dein Projekt ansehen! Hatte schon einmal einen kurzen Blick drauf geworfen. Sehr interessant!

Viele Grüße
Theo

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Sat Nov 02, 2019 8:15 am

kleine Anmerkung zum Display:
Ich habe ein Wavesahre 7 Zoll und der Nachbar die neue Version davon mit HDMI Spliter beide Funktionieren sehr gut und waren fast Plug and Play.

Wenn du mit effizient meinst schnell ergbnisse zu erzielen denke ich das C++ sicher nicht die erste Wahl ist sonst gäbe es nicht so viele Python Projekte rund um den PI. Die Compilier Zeit ist ja nicht das einzige Thema an der stelle.

Ich habe mir zum Beispiel in den Kopf gesetzt das die Resourcennutzung minimal sein soll deshalb ist mein Test System auch immer noch ein 2er.
Hat mich aber fast ein Jahr gekosten bis die GUI Klassen so weit waren das ich nicht 3 Tage für ein neue GUI Element brauchte. Und jetzt stehe ich vor dem Problem das ich nur mit 1024 x 600 Punkten kann. Egal da muss ich jetzt durch.

Überlege dir gut ob du mit Beta anfängst es ist nämlich dann immer schwer zu entscheiden wo ist der Fehler bei dir oder in der Beta lib. Auch weiß ich nicht wie schnell der support bei Linphone ist.

Ich denke du solltest Entscheiden wie du deine GUI machen willst das schränkt mit unter ganz schnell deine Möglichkeiten ein. Wenn du dein GUI malen willst da ist die Auswahl an Tools sehr eingeschränkt. Ich kenne nur eine unter Linux und das ist QT.

https://github.com/BelledonneCommunicat ... ne-desktop
Ist das was du auf dem PI Betreibst ?

Wenn ja siehst du linphone-sdk @ 4438057 im Git Repos einen Link auf eine Version des SDK mit dieser Version ist das gebaut.
git submodule sync && git submodule update --init --recursive
Das holt dir die Version runter und packt den Source mit rein.

https://gitlab.linphone.org/BC/public/l ... lines/9147
Wie du hier sehen kannst wird das der Client "nur" mit Debian 9 gebaut also nicht mit Buster. Ob das bei reinen SDK bau anders ist habe ich jetzt keine Lust zu gucken aber ist schon komisch wenn der Build Error seid Monaten keinen Interessiert.

Was ich auch gesehen habe das sie X Datenbanken unter stützen das macht den Code zum Lesen sicher auch nicht einfacher.
Ist die frage braucht deine Software so was.

Wo hast du den Python Wrapper gefunden ?
https://www.linphone.org/snapshots/linphone-python/
Das sieht alles sehr alt aus und ist 3.9 Aktuell scheint aber 4.3 vom SDK zu sein...

Wenn ich das Projekt angehen würde würde ich jetzt Folgendes machen:
das Letzte Release des SDK abrufen und sehen ob ich das bauen kann.
Wenn das geschafft ist versuchen eine mini Console App zu bauen die ein paar wenige Funktionen Nutzt.
Das würde ich auf einem Buster PC machen. Wenn das Klappt auf den PI das SDK bauen und dann versuchen die App Cross zu kompilieren mit Verzeichniss Sync und CMake.

So jetzt muss ich leider andere Sachen machen ist schon alles sehr Spannend. Und ich helfe gern aber darf meine Aufgabe nicht vergessen.

Wenn du Spaß an Platinen hast ich habe da noch das ein oder Andere Problem zu lösen...
Vor allem man kann Steckbretter so schlecht ins Auto bauen auch zum Testen...
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

linphone development

Sat Nov 02, 2019 2:30 pm

Ich habe ein Wavesahre 7 Zoll und der Nachbar die neue Version davon mit HDMI Spliter beide Funktionieren sehr gut und waren fast Plug and Play.
Ja mit so einem ähnlichen liebäugele ich auch. Die haben ja auch einigermaßen gute 10" und 11" Displays im Angebot. Wenn Du waveshare empfehlen kannst, dann besorge ich mir mal eines.
Wenn du mit effizient meinst schnell ergbnisse zu erzielen denke ich das C++ sicher nicht die erste Wahl ist sonst gäbe es nicht so viele Python Projekte rund um den PI. Die Compilier Zeit ist ja nicht das einzige Thema an der stelle.
Genau das meine ich. Aber ich habe jetzt gerade die Python lib soweit, dass ich Rufe ausführen kann. Das ist ein 10Zeiler. Also es geht zurzeit voran. Ich versuche jetzt mal Qt mit einzubinden, um ein GUI zu bauen.
Ich habe mir zum Beispiel in den Kopf gesetzt das die Resourcennutzung minimal sein soll deshalb ist mein Test System auch immer noch ein 2er.
Hat mich aber fast ein Jahr gekosten bis die GUI Klassen so weit waren das ich nicht 3 Tage für ein neue GUI Element brauchte. Und jetzt stehe ich vor dem Problem das ich nur mit 1024 x 600 Punkten kann. Egal da muss ich jetzt durch.
OK. Effiziente Ressourcennutzung ist auch nicht von der Hand zu weisen. Jedoch wie hast Du eine grafische Oberfläche ohne Qt gebaut? Schreibst Du direkt in den Video-Speicher? Lohnt sich sowas heutzutage?
Ich denke du solltest Entscheiden wie du deine GUI machen willst das schränkt mit unter ganz schnell deine Möglichkeiten ein. Wenn du dein GUI malen willst da ist die Auswahl an Tools sehr eingeschränkt. Ich kenne nur eine unter Linux und das ist QT.
OK. Klar. Ich kenne mich mit Linux nicht so aus. Was bedeutet "Wenn Du dein GUI malen willst"? Gibt es unter Linux keine Widgets? Wie eine TextBox, eine ComboBox oder so. Der Desktop verwendet diese Elemente doch auch? Kann man die nicht Recyclen? :D
Wenn ja siehst du linphone-sdk @ 4438057 im Git Repos einen Link auf eine Version des SDK mit dieser Version ist das gebaut.
git submodule sync && git submodule update --init --recursive
Das holt dir die Version runter und packt den Source mit rein.
Das ist ein prima Hinweis. Ich bin gestern daran gescheitert, ein bestimmtes Commit zu holen (clonen). Da bin ich nicht weiter gekommen. Aber möglw. frage ich Dich da nochmal, wenn ich es angehe. Zurzeit verfolge ich mal den Python-Weg. Das klappt schon gut...
Wo hast du den Python Wrapper gefunden ?
Das sieht alles sehr alt aus und ist 3.9 Aktuell scheint aber 4.3 vom SDK zu sein...
Ja einen Python-Warpper für python3 ist in der beta hier verfügbar. Den Link habe ich aus der linphone developer mailinglist, wo ich registriert bin. Da kann ich Dich gleich fragen: Wie kann ich nur das unter dem Link angegebene commit clonen?
Und Ja! Die libs sind alle sehr alt. Scheinbar wird dort nicht aktiv gearbeitet, aber am python wrapper wird gearbeitet, hat mir der zuständige Entwickler geschrieben.

zum Schluss: Gibt es ein Forum, wo Ihr Euer Projekt vorstellt und Lösungen diskutiert? Ich habe mir das mal angesehen. Das ist sehr interessant, aber manche Entscheidungen für bestimmte Hardware verstehe ich nicht ganz. Das würde mich interessieren, die Begründungen zu den Entscheideungen zu erfahren...

Viele Grüße
Theo

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Sun Nov 03, 2019 7:47 am

Ja mit so einem ähnlichen liebäugele ich auch. Die haben ja auch einigermaßen gute 10" und 11" Displays im Angebot. Wenn Du waveshare empfehlen kannst, dann besorge ich mir mal eines.
Alle Waveshare die in bis jetzt hatte laufen nur eines nicht das ein 1,5 Zoll welches aber nicht via HDMI angeschlossen wird. Das würde ich aber auch noch gerne einbinden ums es im Amatuerenbrett ein zu bauen.
OK. Effiziente Ressourcennutzung ist auch nicht von der Hand zu weisen. Jedoch wie hast Du eine grafische Oberfläche ohne Qt gebaut? Schreibst Du direkt in den Video-Speicher? Lohnt sich so was heutzutage?
Was heißt lohnen ? Es kann sein das ich jetzt Linux böses sage aber es ist meine Erfahrung. Es gibt leider nur sehr Wenige Frameworks für GUI zu mindestens im C++ Kontext. QT / GTK+ / wxWidgets und noch ein paar mehr. Bis auf die QT (wenn diese spezial baut) brauchen die aber alle den XOrg server. Das wollte ich von vorn rein nicht. Dann gibt es für die SDL(2) Graphic Engine noch ein paar Frameworks aber entweder keine Touch Unterstützung oder sehen aus wie vorgestern. Nein meines Wissen bietet der Xorg keine Widgets die man nutzen kann wie bei Windows sonst würde ja zum Beispiel das Tauschen des Window Manager nicht so einfach Funktionieren. Ich habe Wochen zu gebracht bis die Entscheidung gefallen war es selbst zum machen. Heute würde ich mich vielleicht anders entscheiden aber jetzt will ich es durch ziehen.
Ganz Lower im Video Ram Arbeite ich nicht ich arbeite mit der SDL2 eine Engine eigentlich für Spiele daruch Läuft die Software im Fenster oder auf dem PI in der Console fast ohne Code Anpassungen. Nur ein paar IF's aber das nicht Tragisch.

Wenn ich von malen Rede in dem Zusammenhang meine ich die Gui Element zu Zeichen also ein Werkzeug zu haben wo ich Comboboxen Edit felder und so einfach aus eine Bildschirm zusammen setzen kann und dann gleich sehe wie es aussieht. Ohne die Software Bauen und Starten zu müssen. Es gibt einen Begriff dafür fällt mir aber Irgend wie seid tagen nicht ein.

Lohnen für eine Firma die Geld verdienen muss sicherlich nicht. Lohnen um was zu Lernen und das alles (fast) so machen kann wie man es für gut hält auf jeden fall. Wie gesagt meine Software läuft einem 2er ohne das es sich Langsam anfühlt.

https://rogerdudler.github.io/git-guide/index.de.html

Ich denke das du keine bestimmten Commit brauchst sondern einen bestimmen Branch damit du dann auch die neuerrungen bekommst wenn es dort weiter geht.

Habe ich das jetzt richtig verstanden du willst mit Python sowohl das SDK und die QT benutzen ?
zum Schluss: Gibt es ein Forum, wo Ihr Euer Projekt vorstellt und Lösungen diskutiert? Ich habe mir das mal angesehen. Das ist sehr interessant, aber manche Entscheidungen für bestimmte Hardware verstehe ich nicht ganz. Das würde mich interessieren, die Begründungen zu den Entscheideungen zu erfahren...
Nein ein Forum gibt es nicht auf der Projekt Seite gibt es eine Mail Adresse oder hier habe ich das Projekt mal vorgestellt aber das Interesse war sehr gering. Auch Funktioniert das Form nicht wirklich gut (Wartungsstau) und das Haupt Thema ist und bleibt die Kodi/Navit Lösung auch wenn zum Beispiel Kodi nicht mehr Updaten kann weil die Code Änderungen im Kodi keiner kennt. Die Hardware Entscheidungen sind zum Teil aus 2016 da war alles noch ein bisschen viel Teuer habe für mein Waveshare fast das dreifache Bezahlt als das was es heute kostet. Aber das dein Thread nicht meine Sorry für die Ausflüge.
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Sun Nov 03, 2019 8:54 pm

Also mir fällt es schwer zu glaube das die Software gut läuft.

Habe mal versucht die Lib zusammen zu bauen.

Zubehör weil das was Debian kennt wohl zu Alt ist

Code: Select all

sudo apt-get remove libbellesip-dev libbctoolbox-dev libortp-dev

sudo apt-get install  libmediastreamer-dev libbelcard-dev libbelr-dev xsdcxx libxerces-c-dev libxml2-dev libsoci-dev libbzrtp-dev python3-pystache python-pystache antlr3 libmbedtls-dev libdecaf-dev

git clone https://gitlab.linphone.org/BC/public/bctoolbox.git
cd bctoolbox
mkdir work
cd work
cmake .. -DENABLE_POLARSSL=NO -DENABLE_MBEDTLS=YES -DENABLE_TESTS_COMPONENT=NO
cmake --build .
sudo make install

CMake dir Build Zeile 50 Aus kommentiert bc_generate_rpm_specfile("rpm/liblinphone.spec.cmake" "${PROJECT_SOURCE_DIR}/liblinphone.spec")

git clone https://gitlab.linphone.org/BC/public/belle-sip.git
cd belle-sip
mkdir work
cd work
cmake ..
cmake --build .
sudo make install

CMake dir Build Zeile 50 Aus kommentiert bc_generate_rpm_specfile("rpm/liblinphone.spec.cmake" "${PROJECT_SOURCE_DIR}/liblinphone.spec")

git clone https://gitlab.linphone.org/BC/public/ortp.git
cd ortp
mkdir work
cd work
cmake ..
cmake --build .
sudo make install
Lib Bauen

Code: Select all

git clone https://gitlab.linphone.org/BC/public/linphone.git
cd linphone
git fetch
git branch -a
git checkout feature/python_wrapper

mkdir linphone-build
cd linphone-build

cmake ../linphone -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_SHARED=YES -DENABLE_UNIT_TESTS=YES -DENABLE_VCARD=NO -DENABLE_TOOLS=YES -DENABLE_LIME=YES -DENABLE_LIME_X3DH=NO 

Das Lime Pakage finde ich nicht

CMake Zeile 126 find_package(Belr CONFIG REQUIRED) schreibweise
CMake Zeile 180 find_package(BZRTP REQUIRED CONFIG) schreibweise

CMake dir Build Zeile 50 Aus kommentiert bc_generate_rpm_specfile("rpm/liblinphone.spec.cmake" "${PROJECT_SOURCE_DIR}/liblinphone.spec")
Jetzt habe ich den hier und gebe auf:

Code: Select all

/home/punky/develop/linphone/coreapi/lime.c: In function ‘int lime_setCachedKey(void*, limeKey_t*, uint8_t, uint64_t)’:
/home/punky/develop/linphone/coreapi/lime.c:305:2: error: ISO C++ forbids converting a string constant to ‘char*’ [-Werror=write-strings]
  );
  ^
/home/punky/develop/linphone/coreapi/lime.c:303:23: error: invalid conversion from ‘const char**’ to ‘char**’ [-fpermissive]
   role == LIME_SENDER ? colNamesSender : colNamesReceiver,
   ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/punky/develop/linphone/coreapi/lime.c:31:
Würde mich mal interessiern auf welche Linux die Bauen...
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Mon Nov 04, 2019 8:41 am

also Du musst das nicht machen! :oops:
Aber dennoch - vielen Dank! Ich habe das so noch nicht probiert. Ich habe - bei Weitem - auch nicht so viel Erfahrung wie Du mit C++ und make...
Also mir fällt es schwer zu glaube das die Software gut läuft.
Meinst Du die C++ Quellen oder die ganze Applikation. Also das was ich mit sudo apt-get install linphone und linphone-python installieren kann, das funktioniert. Aber das sind ja auch komplette Pakete. Ein build from source direkt auf dem raspi habe ich jetzt noch nicht versucht...

Ein Herr vom linphone developer team hat mir folgendes geschrieben (so etwas ähnliches hattest Du ja auch schon angemerkt):
We actually never tried compiling with VS2019 (If it doesn't work now, it will before the next desktop release) nor cross-compiling from windows.

Cross-compilation can be tricky enough without Windows in the equation and I won't try it. Some have tried with the linux subsystem for Windows but IMO it should be easier with a linux virtual machine or directly on the raspberry. Yocto is also an alternative to build for the raspberry.

You can find documentation about linphone on raspberry here: https://wiki.linphone.org/xwiki/wiki/pu ... rasberrypi (remove the 'no-ui' part in the configure script to include QT interface).

und noch bezügl. der Verfügbarkeit eines aktuellen Moduls von linphone für Python3
Not for now, but some work has been done to make the python wrapper work with python3. You can try with the following git branch of the linphone project: https://gitlab.linphone.org/BC/public/l ... on_wrapper
An Python2.7 bin ich also gerade dran... an 3 habe ich noch nichts versucht. Aber - wie Du auch schon unter Bezug auf Dein eigenes Projekt geschrieben hast - es ist vielleicht besser, das ganze auf dem rpi 3 oder 2 zu bauen. Buster und rpi 4 sind doch sehr neu. Aber mein Stretch-Image startet erstaunlicherweise gar nicht auf dem rpi 4, sondern nur auf dem 3.

Wie ich also sehe, ist die Frage nach dem Environment gar nicht trivial.

Zum build habe ich sonst nur noch das hier http://188.165.40.171:8080/xwiki/wiki/p ... 20Builder/

...aber danke! Du musst das alles nicht machen :D . Du hast bestimmt viele andere wichtige Dinge zu tun!

viele Grüße
vom Theo

User avatar
DerKleinePunk
Posts: 73
Joined: Thu Feb 23, 2017 9:18 am
Location: Germany
Contact: Website

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Tue Nov 05, 2019 5:45 am

Guten morgen

das halt mein helfersydrom und ganz am rande gibt es noch eine Idee für Gruppen Kommunikation per CarPC. CB Funk Ersatz mit Unedlicher Reichweite(wenn es LTE gibt). Da könnte SIP ein Teil der Lösung sein. Aber das wird wohl noch bis zur Version 20 Dauern...

Gerade mit den Hinweisen und aus eigener Erfahrung. Du brauchst eine Linux Kiste mit Buster. Oder dem Linux das auf deinem PI läuft alles andere wirst du nicht gelöst bekommen die nächsten Jahre.

Noch halte ich Buster nicht für das größte Problem ich glaube das Lässt sich regeln. Auch wenn der GCC (Compiler) sehr viel strenger geworden ist. Das strenger werden ist der Fehler den ich gepostet habe.

Das zweite Ding ist Python der Python Branch passiert laut Compiler Ausgabe auf der Api Version 3.12 aktuell ist 4.12 oder 4.13 wenn ich das richtig gesehen habe. Das können Welten sein gerade wegen des Wechsels der ersten Stelle. Der Besagt im Normalfall das die Schnittstelle sich grundlegend geändert hat.

Und du musst die Lib zwei mal bauen einmal auf dem Arbeits PC für X86 oder X64 jenach dem und ein mal auf dem PI. Dein Programm kannst du dann auf dem PC Crosscompileren und so schnell sein. Die Lib wirst du nicht so oft bauen müssen.

Wenn du da mit kannst und dir jetzt eine Linux PC Bastels dann mache ich weiter so fern es meine Zeit erlaubt wenn nicht dann nicht.

http://188.165.40.171:8080/xwiki/wiki/p ... 20Wrapper/
As of today, Jully 2019, liblinphone python binding is no longer updated. We might rework on this project in the futur.
Das sollte dir zu Denken geben. Oder probierst es wie dort angeben und Lebst damit auf der Version 3 X zu sein.

https://wiki.linphone.org/xwiki/wiki/pu ... Linux-MAC/
As of January 2017, only outdated packages provided by the Debian distribution are available
Das heißt für mich selbst bauen ist der einzige weg.

https://gitlab.linphone.org/BC/public/l ... bian10.yml
An Buster sind sie dran

Was ich schade finde das sie Images verwenden so kann man nicht sehen welche Abhängikeiten installiert sein müssen von Betriebsystem.

Das mit dem CMake Builder sehe ich mir noch mal an.
PI 2 und PI 3 1GB Raspbian Strech
Der Wandel von Atom zum Bit ist unwiderruflich und nicht mehr aufzuhalten.
Nicholas Negroponte

theobald
Posts: 15
Joined: Sat Oct 26, 2019 11:14 am
Location: Sachsen, Deutschland

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Wed Nov 06, 2019 8:58 am

Hi :D
das halt mein helfersydrom und ganz am rande gibt es noch eine Idee für Gruppen Kommunikation per CarPC. CB Funk Ersatz mit Unedlicher Reichweite(wenn es LTE gibt). Da könnte SIP ein Teil der Lösung sein. Aber das wird wohl noch bis zur Version 20 Dauern...
Das ist eine interessante Idee, aber ob das im Zeitalter des Handys noch sinnvoll erscheint, ist fraglich. Zudem habe ich gelesen, dass linphone (wie wahrscheinlich auch andere SIP-Bibliotheken) empfindlich auf Verbindungsabbrüche reagieren. Das ist verständlich, da das Streaming von Audiodaten ein komplizierte Sache ist...
Gerade mit den Hinweisen und aus eigener Erfahrung. Du brauchst eine Linux Kiste mit Buster. Oder dem Linux das auf deinem PI läuft alles andere wirst du nicht gelöst bekommen die nächsten Jahre.
Ja das scheint mir auch so. Ich werde mich um Beschaffung bemühen :D. Ich habe noch einen guten 1HE Atom 520 Server hier rumliegen. Der ist recht schnell und ich müsste ihn nur neu aufsetzen...

Was Python angeht, so muss ich dort noch etwas Arbeit investieren. Ich komme zurzeit nicht nach... muss erst mal andere Sachen beheben...
Wenn du da mit kannst und dir jetzt eine Linux PC Bastels dann mache ich weiter so fern es meine Zeit erlaubt wenn nicht dann nicht.
http://188.165.40.171:8080/xwiki/wiki/p ... 20Wrapper/
Klar kannst Du Dich auch gern daran versuchen! Wenn ich Fragen zu C++ habe, werde ich mich an Dich wenden... Ich probiere erst mal, ob ich mit Python vorwärts komme.

Übrigens. Bei mir funktioniert die unter dem o.g. Link (188.165.40.171) angegebene Verfahrensweise nicht. Ich habe unter Buster nur

Code: Select all

sudo apt-get install linphone-python
verwendet. Woher dieses Paket stammt und was es enthält, kann ich leider nicht sagen. Es scheint ja sogar in den aktuellen Repositories drin zu sein. Man muss die sources list nicht ändern! Es läuft aber nur mit Python2.7.

Soweit erstmal für Heute

Viele Grüße.
Theo

smartifahrer
Posts: 938
Joined: Sat Feb 13, 2016 8:10 am

Re: Grundlagen und Environments für das Crosscompiling zwischen Win 8.1x64 und raspberry Pi 4B unter Buster

Wed Nov 06, 2019 9:46 am

Probier mal

Code: Select all

sudo apt-get install linphone-python3
Ungetestet ;)
Für Python gibt es ein Paket Installer "pip" bzw "pip3" für Python 3.x

Trotz Handy gibt es sehr lebendige CB-Funk (Kurzstrecke) bzw. Amateurfunk (Weite Entfernungen nur mit Funklizenz) Szenen die mitunter deutlich mehr übertragen als Sprache und Morse-Zeichen.

Return to “Deutsch”