[fpc-pascal] android basic question

Thierry Bothorel thierry.bothorel at gmail.com
Sun Jun 6 17:38:39 CEST 2010


Marco van de Voort a écrit :
> In our previous episode, Thierry Bothorel said:
>   
>> After googling I did not found clear answers, but my understanding is
>> that it is not possible to build natives libraries for Android without
>> writing a completely new libc translation for bionic ?
>>     
>
> I don't fully understand. libc's are not translated into pascal.
>   
Well,

to me more clear, when I try to compile this :

> library hellojni;
>
> {$mode objfpc}{$H+}
>
> uses
>   //Classes
>   { you can add units after this }
>   JNI;
>
> {$R *.res}
>
> procedure Java_com_example_hellojni_HelloJni_stringFromJNI(
>           PEnv: PJNIEnv;
>           Obj: JObject);
>           {$IFDEF WIN32} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
> begin
>   Writeln('Hello world from Freepascal!');
> end;
>
> exports
>   Java_com_example_hellojni_HelloJni_stringFromJNI;
> end.

I have errors in ...fpsrc/2.5.1/packages/libc/....


...
> Assembling hellojni
> Compiling resource
> /home/thierrybo/Sys/Lazarus.projets/Tests/JNI/Hello-jni/lib/arm-linux/hellojni.or
> Linking
> /home/thierrybo/Sys/Lazarus.projets/Tests/JNI/Hello-jni/hello-jni.so
> /home/thierrybo/Sys/local/opt/fpc/cross/bin/arm-linux-ld: cannot find
> -lpthread
> hellojni.lpr(17,41) Error: Error while linking
after googling, it appears android libc is not standard. Here is an
excerpt aboout a patch for Mono:

> This is a series of patches to add support to Mono for building against
> the Android NDK [0].  Android runs the Linux kernel, but moves many
> things around compared to a "normal" desktop Linux distro.
> These patches are based against the mono-2-6 branch.
> This second patch patches libgc so that it will properly build and link
> under Android.  In particular, note that Android includes pthread_*()
> functions within libc, not libpthread, thus the added configure check.
>         * include/private/gcconfig.h: Android platforms are built atop
> Linux,
>           don't use glibc, and uses `environ` instead of `__environ`.
>         * configure.in: Use AC_CHECK_LIB() to check for pthread instead of
>           just blindly linking to -lpthread, as Android includes pthread
>           support within libc and doesn't provide a separate libpthread.
Thierry B



More information about the fpc-pascal mailing list