Ja die Idee ist schon sehr aufwändig, aber dann wirklich alles von Grund auf Neu zu machen ist dann echter Wahnsinn. Darum gibt es wie in anderen Projekten auch Abhängigkeiten.
Ganz oben auf der Liste steht die (lib)SDL, das ist eigentlich eine Spieleengine, geschrieben in C, und ist auf fasst allen Plattformen verfügbar. Sie war beim Testen die, mit der besten Dokumentation und den meisten Beispielen. Auch war sie am einfachsten zu installieren. Im weiteren ist sie Relativ klein und Modular aufgebaut. Ihr fehlen auch bestimmte Dinge, die sicher ein Spiele-Programmierer vermissen würde, aber hier in diesem Projekt fand ich sie genau richtig. Sie abstrahiert mir die Grafikkarte und Soundkarte weg. Was ich ehrlicher Weise unterschätzt habe, ist der Aufwand zum Erstellen von eigenen UI Elementen wie bsp. Labels, Listen etc.. Da ich aber keinen X-Server auf dem Raspberry haben möchte (Ressourcenverbrauch) ist es aber der einzige Weg. Ich habe mir wirklich viele GUI Implementierungen für die SDL angesehen, aber nichts gefunden was passt. Entweder sieht das Ergebnis zum Fürchten aus oder es ist OpenGL, was wiederum die SDL sehr einschränken würde. Denn dann muss der Support für OpenGL in der passenden Version verfügbar sein. Sprich, man ist wieder bei der Hardware. Nein, stimmt nicht ganz, wenn man ganz tief gräbt gibt es wohl in der Qt auch die Möglichkeit ohne X-Server unter bestimmten Bedingungen auszukommen aber mir ist das Teil einfach zu riesig. Auch muss man die dann selbst bauen, und das nach jedem Patch. Gefühlt passt das einfach nicht zu meinem Ansatz die Ressourcen optimal auszunutzen. Getestet habe ich bis dato noch nicht, denn nur um mal was zu Probieren 6 Stunden zu Compilieren ohne zu Wissen was raus kommt war mir einfach zu lang.
Debian Packages für alles, also auch um libosmscout zu bauen und die SDL2
ldd dyn lib anzeigen
Will man den ganz neuen Graphiktreiber nutzen, nicht den Nativ PI, gibt es hier und hier Informationen. Zur Zeit noch nicht getestet.
sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libswscale-dev libfluidsynth-dev libmpg123-dev libglobjects-dev libsystemd-dev libglfw3-dev libprotobuf-dev protobuf-compiler libsamplerate0-dev libflac-dev libmodplug-dev libvorbis-dev libjpeg-dev libwebp-dev libtiff-dev libtag1-dev libudisks2-dev libssl-dev libsqlite3-dev
Ohne X Server. Die von Debian gelieferte Version braucht den X Server
wget -N http://www.libsdl.org/release/SDL2-2.0.10.tar.gz tar -xzf SDL2-2.0.10.tar.gz -> auspacken cd SDL2-2.0.10 ./autogen.sh ./configure --disable-esd --disable-video-mir --disable-video-wayland --disable-video-opengl --host=arm-raspberry-linux-gnueabihf make sudo make install
Da es ohne X Server läuft muss man bei den Video Driver rpi sehen sonst geht es nicht und es wurde Header nicht gefunden
SDL2Image bauen
wget -N https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.5.tar.gz tar zxvf SDL2_image-2.0.5.tar.gz cd SDL2_image-2.0.5 ./autogen.sh ./configure make sudo make install cd ..
SDL2Mixer bauen
wget -N https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz tar zxvf SDL2_mixer-2.0.4.tar.gz cd SDL2_mixer-2.0.4 ./autogen.sh ./configure make sudo make install cd ..
SDL2Net bauen
wget -N https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.0.1.tar.gz tar zxvf SDL2_net-2.0.1.tar.gz cd SDL2_net-2.0.1 ./autogen.sh ./configure make sudo make install cd ..
SDL2TTF bauen
wget -N http://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz tar zxvf SDL2_ttf-2.0.15.tar.gz cd SDL2_ttf-2.0.15 ./autogen.sh ./configure make sudo make install cd ..
git clone https://github.com/Framstag/libosmscout.git cd libosmscout mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Debug cmake --build . sudo cmake --build . --target install cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build . sudo cmake --build . --target install
Links:
Raspberry Pi - Building SDL 2 on Raspbian
building_arm_toolchain_with_crosstool-ng