2012-08-29 16 views
6

Próbujesz przenieść bibliotekę Delphi na Androida. Free Pascal obsługuje Androida/ARM - dostępny jest wstępnie skompilowany kompilator dla systemu Windows. Jednak Android NDK obsługuje teraz również MIPS i x86. Jaki jest status wsparcia dla osób zatrudnionych w ZKP? Na razie mój projekt jest mniej lub bardziej agnostyczny CPU - natywne bity są budowane dla wszystkich czterech obsługiwanych architektur. Nie chcę tego puścić.Bezpłatny Pascal dla Androida na MIPS

Nie jestem po pełnym cyklu rozwoju Android w Pascalu - tylko biblioteki algorytm, który nie robi nic I/O. Próbowałem przetłumaczyć go na C z p2c, ale tłumacz dławi źródła.

powinienem po prostu spróbować i zbudować cross-kompilatora dla danego CPU z systemem Linux, a następnie połączyć przeciwko biblioteki NDK?

EDIT: I został zbudowany cross-kompilatora Intel/Linux ze źródeł z branży Android. Działa, z wyjątkiem tego, że musisz wywołać ppcross386, aby skompilować, a nie fpc. Wydaje się, że ten ostatni ignoruje opcję -Tlinux i wywołuje kompilator Intel/Win32.

EDIT2: z małą zmianą makefile i źródeł, MIPS cross-kompilator buduje. Jednakże, gdy budynek przechodzi do RTL z procesorem krzyżowym, prawie od razu występuje błąd.

Odpowiedz

3

EDYCJA, w końcu: wsparcie dla celu kompilacji systemu Android/MIPSEL jest dostępne w bagażniku FPC. Wyeksportuj najnowszy, zbuduj crosscompiler, odłóż kod.


Choć można tu i tam znaleźć wsparcie dla MIPS ISA w źródłach FP, to nie jest jeszcze oficjalnie zrobić. Oczekiwanie na wydanie 2.7.

W międzyczasie, nie support for compiling to Java bytecode w bagażniku, to udokumentowane w wiki FP. Może mogę wykorzystać to jako blokadę ...

EDYTOWANIE: Bezpłatny Pascal przez JVM działa w ogóle na Androidzie, ale its rules are somewhat different od zwykłego Pascala. W przeciwnym razie prawidłowy Pascal przerwie, gdy zostanie skompilowany do JVM. Nie nadaje się więc do przenoszenia dużych ciał starego kodu Pascala, który nie został napisany z myślą o JVM.

EDYCJA: Mój projekt FPC działa na MIPS/Android, ale mój przepis nie nadaje się do ogólnej konsumpcji, ponieważ zakres wykorzystania Pascal RTL w moim projekcie jest bardzo ograniczony. Obejmuje to kompilację krzyżową z zespołu Pascal do MIPS (kierowanie na MIPSEL/Linux, dostępny w pniu FPC), a następnie dostarczanie wygenerowanych źródeł zespołu do systemu budowania NDK, dostarczając przy okazji reimplementację C/zespołu ograniczonego podzbioru Pascal RTL.

Całe ciało Pascal RTL jest wielki i straszny. Moje rozwiązanie, które polega na ponownym wprowadzeniu Pascala RTL w C od zera, jest, przeciwnie, ogólnie stosowane.

+0

Pomysł JVM mógłby zostać nieco uproszczony, ponieważ Android nie uruchamia maszyny JVM. Czy produkujesz kod, który będzie podawany do konwertera bajtów na java-to-dalvik Androida? Czy dodajesz JVM innej firmy do Androida (możliwe, ale niezwykłe)? –

+0

Free Pascal jest w stanie kompilować się do kodu bajtowego Java (jako pliki .class), który można przekazać do systemu kompilacji systemu Android jako bibliotekę zależności. Szczegóły [tutaj] (http://wiki.freepascal.org/FPC_JVM). Moja przeszkoda [tutaj] (http://bugs.freepascal.org/view.php?id=22892). –