Kompatiblität:
Du kannst Programme, die nur reine Bibliotheks-funktionen ausführt direkt auf einem anderen ARM System das auch Linux laufen lässt starten. Andersrum gehts natürlich auch: d.h. der Code muss allerdings im Linux-ELF Format vorliegen.
Wenn aber (und das sind die allermeisten) die GP2X-Programme statisch gelinkt sind werden die mitgelinkten Bibliotheken genutzt und das wäre zB bei SDL tödlich, weil ein anderer Handheld sicher ein SDL mit einem anderen Framebufferansteuerung braucht
Abgesehn davon führen natürlich nicht-portable Zugriffe wie zB direktes lesen & schreiben auch zu Problemen, weil andere Hardware andere Speicherregister benutzt. Ausnahme: Handhelds die denselben Chip benutzen wie der GP2X. (mmsp2)
Beispiel: Zaurusprogramme sollten zB auf dem GP2x laufen weil die Bibliotheken (Qtopia) vorhanden sind und diese die Hardware abstrahieren. (Falls diese Programme wiederrum keine direkten Zaurus- Hardwareresourcen benutzen)
Ein statisch gelinkter Emulator läuft auch nur auf dem GP2X. Auf einem anderen Handheld würde die mitgelinkte SDL Version wahrscheinlich den anderen Handheld crashen.
Ein dynamisch gelinktes Spiel das SDL & SDLmixer benutzt läuft auch auf einem anderen Linux-handheld das beide Bibliothekn zur Verfügung hat, aber auch nur dann wenn die Auflösung des Displays diesselbe ist oder wenn diese vorher korrekt abgefragt wurde.
Ein statisch gelinktes Konsolenprogramm, zB tail, sollte auch auf einem anderen ARM-Handheld (hey wir reden hier von Handhelds mit der selben CPU-Architektur
laufen weil tail relativ wenige Abhängigkeiten hat die problematisch sind. Die mitgelinkte glibc sollte auch auf einem anderen Handheld ohne Probleme laufen und damit auch das Programm.
Ein dynamisch gelinktes Spiel welche die Bibliothek SDK2X bzw. ryleh's minilib (als Ersatz für die SDL) nutzt, wird auch nicht auf anderen Handhelds als dem GP2X laufen weil diese Bibliotheken hardwarenah und nichtportabel geschrieben wurden.
Warum werden aber die meissten Programme statisch gelinkt: ganz einfach weil die Bibliotheken im NAND größtenteils veraltet sind und nicht jedes Programm einen eigenen Satz an Bibliotheken mitliefern will und kann, weil es leider auch zu Problemen mit dem ld-loader führt, wenn verschiedene Versionen einer Bibliothek im Speicher ist. Stichwort: doppelte Symbole.
Kurz: dank Linux und dessen portablen Bibliotheken ist die Situation relativ entspannt, aber im Detail knifflig.
Kompatiblität mit NEO1973:
Das Handy benutzt für seine GUI afaik eine Variante von GNOME. Da diese GNOME Variante aber nicht auf dem GP2X portiert ist sind dürfte NEO Programme, die dessen GUI nutzen, nicht auf dem GP2X laufen. Konsolenprogramme die keine NEO spezifischen Hardwareresourcen (ja, ich wiederhole mich
nutzen sollten hingegen laufen. Das ändert sich wenn dessen GUI-libs + alle anderen vorhandenen Bibliotheken portiert würden. Andersrum hingegen ist die Situation völlig unklar. Dynamisch gelinkte Programme, die nur auf portable Bibliotheken nutzen sollte laufen
- falls die Bibliotheken vorhanden sind.