Freepascal-Thread


Kaworu

Still Fresh
Joined
Oct 3, 2009
Messages
81
Hm ja xyta, deine Vermutungen unterstütze ich auch alle.
Das mit dem child process ist mir auch erst in den Sinn gekommen nachdem ich den Beitrag abgeschickt habe ^^

Ich denke dass es durchaus funktionieren könnte wenn man alle SDL-Sachen in den selben Ordner hineinkopiert und möchte es aufjedemfall austesten.
Müsste dazu aber wissen wo sie sich befinden und wie sie alle heißen :)

[Auf Windowsseite hätte ich niemals solch einfache Fragen gestellt xD]
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Könnte jemand von euch folgendes eingeben:
Code:
ldd ./sdltest01
und mir die Ausgabe posten?

Ein Änderung der fpc.cfg bringt nichts, da diese nur für das Compilieren verwendet wird und da findet er bei mir alle Bibliotheken, sonst könnte ich die ausführbare Datei nicht erstellen. Ich vermute eher, dass zur Laufzeit die SDL - Bibliothek, "libSDL.so" nicht gefunden wird, warum auch immer.

Gruß und Danke
Thomas
 

Kaworu

Still Fresh
Joined
Oct 3, 2009
Messages
81
Grade ausprobiert.. der Befehl existiert wohl nicht..
Code:
XXX:/media/data/sdltest01$ ldd ./sdltest01
bash: ldd: command not found
Wo genau sollte sich die Datei "libSDL.so" denn befinden?
Würde sie gerne mal ins gleiche Verzeichnis hineinkopieren.

-- Mo Feb 14, 2011 15:37 --

So, hatte vorher in /lib/ gesucht, jetzt aber in /usr/lib gefunden.
Folgende SDL-beinhaltete Dateinamen sind enthalten:
Code:
/usr/lib/

libSDL-1.2.so.0
libSDL-1.2.so.0.11.3
libSDL_gfx.so.0
libSDL_gfx.so.0.0.17
libSDL_image-1.2.so.0
libSDL_image-1.2.so.0.8.2
libSDL_mixer-1.2.so.0
libSDL_mixer-1.2.so.0.10.1
libSDL_net-1.2.so.0
libSDL_net-1.2.so.0.0.7
libSDL_ttf-2.0.so.0
libSDL_ttf-2.0.so.0.6.3
Habe alle diese Dateien ins selbe Verzeichnis kopiert und sogar lib.SDL-1.2.so.0.11.3 in libSDL.so umbennant (aber nur die Kopie im Ordner wo sdltest01 ist, nicht in /usr/lib)
leider mit dem selben Erfolg wie bisher.

-- Mo Feb 14, 2011 16:32 --

Habe nun ldd per opkg install ldd installiert.
Leider hilft uns das in dem Falle nicht weiter:
Code:
XXX:/media/data/sdltest01$ ldd ./sdltest01
ldd: exited with unknown exit code (139)
Bei ldd mount z.b. sieht man aber dass der Befehl zu arbeiten scheint.
Da werden wie erwartet die verwnedeten Librarys aufgezeigt.
 

xyta

Still Fresh
Joined
Aug 28, 2009
Messages
887
Hm, also ein dokumentierter FPC-Fehlercode scheint 139 nicht zu sein:

http://www.math.uni-hamburg.de/it/software/fpk/user/user.html#SECTION001400000000000000000

und es ist auch nicht $139=313... :confused:??
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Kaworu kannst Du bitte folgendes auf der Console eingeben:
Code:
file ./sdltest01
und mir die Ausgabe posten. Ich vermute fast, dass kein gültiges Program erstellt wird. Das ganze bitte auch mit einem anderen Programm, damit ich die Ergebnisse vergleichen kann.

Gruß
Thomas
 

Dr.Damm Fist

Still Fresh
Joined
Dec 14, 2009
Messages
347
Age
34
Location
Germany / Thuringia
Hi Leute,
sry aber ich blicke gerade nicht durch, seid ihr dabei einen FPC für Cannoo/WIZ oder für die Pandora aufzusetzen, vllt. kann ich ja in Sachen Pandora helfen, hab ja jetzt eine..
Schonmal richtig klasse das ihr euch die Arbeit macht, ich dachte trotz FPC sei Pascal tot^^ schön das es nicht so ist... MfG
 

Kaworu

Still Fresh
Joined
Oct 3, 2009
Messages
81
@KidPaddle gemacht:
Code:
XXX:/bin$ file busybox
busybox: setuid ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
XXX:/bin$ cd /media/data/sdltest01
XXX:/media/data/sdltest01$ file ./sdltest01
./sdltest01: ELF 32-bit LSB executeable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped

@Dr.Damn Fist

Herzlich Willkommen :D
Freut mich dass nun noch einer im Bunde ist, der an FPC auf der Pandora interessiert ist ;)
 

xyta

Still Fresh
Joined
Aug 28, 2009
Messages
887
Also nach dieser Seite:

http://andre.stechert.org/urwhatu/2005/06/ldd_ldlinuxso2_.html

Ist der ldd-Fehler 139 eine Schutzverletzung. (SIGSEGV)

http://en.wikipedia.org/wiki/SIGSEGV
http://de.wikipedia.org/wiki/Schutzverletzung

ich vermute, dass diese beim Zugriffsversuch auf die SDL-Bibliothek auftritt. Statt den Code der Bibliothek wird vermutlich eine Speicherstelle angesprungen, wo das Programm nicht hin darf...

Das Hallo-Welt-Programm linkt ja keine Bibliotheken, und es funktioniert offenbar. :confused:??

Also das Problem tritt sowohl beim Canoo als auch auf der p&|a auf?
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Ja, es tritt bei beiden auf. Der Befehl ldd sollte nur die einzubindenden Bibliotheken auflisten, das Programm sollte dabei nicht gestartet werden, soweit mir bekannt ist. "ldd" kann nur auf dem Caanoo nicht so einfach installiert werden, daher der Test auf der Pandora.

Auch das "HalloWelt!" verwendet Bibliotheken, z. B. die libc.so.XXXX, da sonst keine Ausgabe auf dem Terminal möglich wäre.

Ich versuche jetzt mal die Bibliothek dynamisch zu binden um den die prinzipielle Vorgehensweise zu testen.

Gruß
Thomas
 

xyta

Still Fresh
Joined
Aug 28, 2009
Messages
887
Bei Hallo Welt müsste die Textausgabe ja über die System-Unit/RTL laufen. Entsprechend dem Pascal-Konzept ist diese ja schon vorkompiliert. D.h. System/RTL enthält erfolgreiche vorbereitete Linkings, während es bei eigenen Programmen scheitert. :confused:??

Was du auch noch testen könntest wäre das Linken anderer Bibliotheken...
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Das stimmt, es geht über die RTL, aber dort wird unter Unix die Unit libc.pp eingebunden, welche aus der Bibliothek libc.so etliche Funktionen importiert. Die "libc" ist eine der zentralen Bibliotheken unter Linux, ohne diese geht fast gar nichts.

Wollte dynamisch die Funktionen einbinden, leider muss ich mich jetzt um zwei nicht auffindbare Funktionen "_fini" und "_init" kümmern.

Gruß
Thomas

-- Sa Feb 19, 2011 12:38 --

So, etwas weiter gekommen bin ich in den letzten Tagen. Es wurde unter Caanoo und Pandora die falsche Bibliothek zum laden von dynamischen Bibliotheken verwendet, "ld-linux.so.2" anstelle von "ld-linux.so.3". Ursache war das fehlerhaften Setzen einer Konstante bei der Erstellung des Crosscompilers.

Nun kommt die Meldung über eine nicht gefundene Dateien nicht mehr, jedoch wird eine "Segment - Fault" Exception beim starten des Testprogrammes erzeugt. Leider habe ich keine passenden dbg für den caanoo und den gdbserver kann ich wegen mangelnder Unterstützung des WLAN USB - Stick nicht einsetzen. Wird also noch etwas dauern, bis ich das hin bekommen werden.

Ich habe das Testprogramm angehängt, kann jemand das auf der Pandora bitte probieren und falls jemand mit dem dbg umgehen kann, testen was dieser beim ausführen des Programmes meldet.

Gruß
Thomas

-- Sa Feb 19, 2011 13:07 --

Hab noch meinen N800 ausgegraben und kann den Fehler dort nachvollziehen. Jetzt nur noch gdb für den finden und dann kann das testen weiter gehen.

Thomas
 

Attachments

  • SDLTest01.zip
    61.8 KB · Views: 175

Kaworu

Still Fresh
Joined
Oct 3, 2009
Messages
81
Oh mein Gott.. vor 3 Tagen hätte ich das schon testen können o_O
Und ich warte auf eine eMail Benachrichtung -_-

Ich hatte versucht durch "sudo opkg install dbg" "dbg" zu installieren, falls es überhaupt vorhanden ist ^^
Klappte aber nicht mit der Quittung "Cannot install package dbg". Ausserdem kenne ich mich ohnehin nicht
damit aus. Kann diesbezüglich nur mit Anleitung helfen.

Anonsten kann ich die Ausgabe "Segmentation fault" auf Seiten der Pandora auch bestätigen.
Schön dass der alte Fehler behoben wurde :)

Übrigens kommt bei "ldd ./sdltest01" die Ausgabe "not a dynamic executable"
Ich nehme aber an dass das auch so gewollt ist..


Wenn ich sonst noch irgendwas testen kann, bin ich bereit ;)
vielleicht wäre es was, einen VNC-Server auf der Pandora laufen zu lassen und dich machen lassen ^^
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Es ist geschafft!!!!

Ich habe erfolgreich ein 2.51 Freepascal - Compiler für die Erstellung von Programm für den Caanoo und N800(!) erstellt. Wenn jemand noch den Test für die Pandora machen könnte, wäre das klasse. Ihr müsst die Dateien sdltest01 und sdltest02 starten. Auf dem Caanoo könnt Ihr die Programme direkt über den Explorer aufrufen, entsprechende INI-Dateien sind mit im Archiv enthalten.

Beide Dateien machen das gleiche, anzeigen eines Bildes für ca. 2,5 Sekunden und automatisches Beenden. Nichts besonderes, aber damit konnte ich die Einbindung von SDL testen. Nur der Art des Einbindens unterscheiden sich die Programme, sdltest01 macht eine späte Bindung, d. h. ich lade die benötigten Funktionen dynamisch zur Laufzeit, sdltest02 macht eine frühe Bindung und damit übernimmt der Linker die Arbeit.

Um Feedback wird gebeten :)

Gruß
Thomas

Edit:

Sogar auf dem Palm Pre mit WebOS 1.4.5 lief das Programm mit einer kleinen Anpassung, Doublebuffer wird nicht unterstützt. Cool.
 

Attachments

  • fpceabi.zip
    151.9 KB · Views: 183

Kaworu

Still Fresh
Joined
Oct 3, 2009
Messages
81
WOOOOOW XD

GZ, du hast es tatsächlich geschafft!!

Es laufen auf der Pandora beide Versionen des SDLtests!
Es werden in beiden Fällen ohne erkenntlichen Unterschied jeweils das Bild anzeigt und
auf der Konsole "Starting" und "closing" ausgegeben ohne irgendwelche Fehlermeldungen :)

Du bist mein Held^^

Jetzt bin ich aber sehr gespannt wie du das geschafft hast..
Ich sehe dass du auf den aktuellsten Sourcecode umgestiegen bist, der Änderung bezüglich der EABI Unterstützung aufweist.
Hat das vielleicht sogar laut Anleitung zum Kompilieren ohne weitere Probleme funktioniert?

Meine Güte, haben wir ein Glück dass du dich für den FPC interessierst.. ohne dich würde es bestimmt noch mindestens 2 Monate TM dauern :)
Aufjedemfall schonmal ein großes Dankeschön von mir!

Achja, noch etwas..... her damit ;p
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Sehr gut, das war die erhoffte Antwort, vielen Dank für die Rückmeldung. Dann wird der Compiler auch auf dem Beagleboard und IGEPv2 laufen, letzteres habe ich hier noch herum liegen.

Ich habe ein erstes Baller - Spiel mit Sound und TTF - Fonts probeweise kompiliert, ein eigenes Beispiel von mir, und das lief sauber auf dem Caanoo. Zwar stimmen noch die Bildabmessungen nicht, war auf 640x480 ausgelegt, aber es funktioniert. Enthält auch ein "Mini" - Framework für SDL.

Die Vorgehensweise ist im nach hinein recht einfach. Schwierigkeiten machte nicht der FPC - Kompiler, nachdem man -dFPC_ARM_EABI und -dFPC_ARMEL beim erstellen des Kompiliers mit auf den Weg gibt, sondern der externe Linker, der aufgerufen wird, wenn dann das eigene Programm kompiliert wird. Der wollte partout nicht den korrekten Linux - Linker setzen und das herauszubekommen hat recht lange gedauert. Zum Glück konnte ich mittels cygwin das Programm "readelf" und "file" unter Windows zum laufen bekommen, was die Kontrolle des Ergebnisses sehr vereinfacht hat.

Bei den GPH SDK für Caanoo ist auch ein Debugger für den Caanoo vorhanden, Einzelschritt durch das Programm auf einer seriellen Console, yeah, alte Zeiten kommen zurück :).

Ich werde versuchen eine fertige Umgebung bereit zustellen. Dazu wird ein Teil des Caanoo GPH SDK verwendet, die erstellten Bibliotheken für Win32 und arm-linux, und 2 oder 3 Beispiele. Es soll möglichst aus dem Stand laufen, ohne das etwas eingerichtet werden muss und auch gleich alles benötigte für die ersten Schritte beinhalten. Sollte ich bis morgen hin bekommen, wenn nichts dazwischen kommt.

Tja, die Pandora kann kommen :)

Thomas

Der nächste Schritt heißt: Android, wir kommen ....

-- Sa Mär 12, 2011 21:59 --

So, hab da mal was gebastelt und die Installation ist recht einfach. Datei entpacken und den Anweisungen in der readme.txt folgen. Jeder sollte sich auf jeden Fall das SDK von GPH besorgen, damit er die eventuell benötigten Bibliotheken einfach in das ToolChains\GPH_Caanoo\Libs - Verzeichnis packen kann.

http://www.seban.de/download/crosscompiler/armel/FPC4ARMv2.7z

Unterstützt werden in der DOS - Bach, nach dem Aufruf von setenv.bat:
Windows: Aufruf mit make_win.bat projekt.dpr
GP2X: Aufruf mit make_gp2x.bat projekt.dpr
GP2XWIZ: Aufruf mit make_wiz.bat projekt.dpr
Caanoo/Pandora: Aufruf mit make_armel.bat projekt.dpr

Caanoo/Pandora/Palm Pre und N800 werden immer mit make_armel kompiliert, da es bei allen Geräten um den gleichen Crosscompiler handelt. Eigentlich könnten auch N8X0 und N9X0, gehen, da die gleiche Linux-Architektur haben, bin mir aber da nicht sicher.

Werde das noch ausbauen und eine Oberfläche schrieben, mit der man Kompilieren und Installationspakete erstellen kann, aber das wird nichts in den nächsten Wochen.

Gruß
Thomas

-- So Mär 13, 2011 13:30 --

Auf dem IGEPv2 - Board läuft auch der Compiler, mein Testprogramm wurde auf meinem Fernseher angezeigt, wird cool ein 320x240 Spiel auf ne 37er Mattscheibe anzuschauen, gott was für ein Pixelsalat. :)

Thomas
 

Kaworu

Still Fresh
Joined
Oct 3, 2009
Messages
81
Hallo Thomas..

Nur ne kleine Zwischenmeldung:

War bis vor kurzem nicht zu Hause und hab mir bereits die 2. Version deines Paketes runtergeladen.
Wollt nur bescheid geben warum ich mich dazu noch nicht geäussert habe und danke dir nochmals
für deine Mühe! :)

Eine Frage habe ich aber noch.. wäre es dir mit deinem Know-How auch möglich den FPC
direkt auf der Pandora lauffähig zu bekommen? also im Grunde ja nur den Compiler, da
der Rest bereits funktioniert - oder kommen da wieder andere Schwierigkeiten ins Spiel?

Ich melde mich wieder sobald ich deine Werke bestaunt habe ;)


Mit freundlichen und dankbaren Grüßen: Arthur
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Kaworu said:
Eine Frage habe ich aber noch.. wäre es dir mit deinem Know-How auch möglich den FPC direkt auf der Pandora lauffähig zu bekommen? also im Grunde ja nur den Compiler, da der Rest bereits funktioniert - oder kommen da wieder andere Schwierigkeiten ins Spiel?
Laut den Beschreibungen im Internet sollte es machbar sein, aber da ich es noch nie getan habe, wird es wohl Zeit das mal zu machen. Ob Pandora oder mein IGEPv2 sollte keinen Unterschied machen.

Gruß
Thomas
 

Kaworu

Still Fresh
Joined
Oct 3, 2009
Messages
81
Hallo nochmal..

Hab mir jetzt dein Paket genauer angeschaut und muss sagen
dass alles von vornherein bestens funktioniert hat!

Hab auch ne Art HelloWorld geschrieben und dein SDLtest etwas abgeändert
(nur ein Raumschiff des Bildes wird vom linken zum rechten Bildschirmrand hin und her bewegt)

Sogar das gles_tutorial von carli lies sich anstandslos für die Pandora kompilieren!
Zwar gibts beim Ausführen des Tutorials noch einen Fehler, aber dieser wird sicher nichts mit dem Kompiler zu tun haben :D
Genauere Infos dazu poste ich gleich im entsprechenden Thread ^^

Super.. es funktioniert auf der Pandora tatsächlich genauso wie das Windows-kompilat :juhu:
 

KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
419
Location
Germany
Danke für die Rückmeldung. Werde das Teil weiter ausbauen und Support für iPhone und Windows CE hinzufügen. Solange SDL in dem Zielsystem vorhanden ist, sollte es keine Probleme geben.

Kannst Du mir die OpenGL ES Header und das Testprogramm bereit stellen? Zum Testen, ob es auch auf den anderen Maschinen läuft. Ich würde es gerne in die "Suite" integrieren.

Gruß
Thomas
 
Top