[Tutorial][Binaries] gdc for android

Johannes Pfau nospam at example.com
Sun Feb 5 14:04:45 PST 2012


Am Sun, 5 Feb 2012 18:04:12 +0100
schrieb Johannes Pfau <nospam at example.com>:

> I will probably need some more time to get this working...
> 

I have some good news:
http://www.mediafire.com/?107we120sh3xx

I fixed that problem and then the whole build worked fine. I'll post
build instructions soon, but the binaries are ready. I only did a
simple gdc -c test.d to check the compiler, but it seems to work.

Linking against druntime fails, as it uses functions which are not
available on Android (backtrace, signal stuff).

I also built a simple hello world on linux (printf, no runtime) and ran
it on my android phone, and it worked!

In case you haven't used GDC without runtime before, a short
introduction:

* use gdc -nophoboslib to make gdc not link against phobos (and afaik,
  druntime)
* theres also -nostdlib in case you need it
* complex code may require -fno-section-anchors because of bug #120
* You'll get an error about a missing _Dmodule_ref symbol. That symbol
  is used by module constructors and not generated by gdc if
  -nophoboslib was passed. As long as you don't run the module
  constructors, you can add a fake _Dmodule_ref in a .c file:

------------
void* _Dmodule_ref;
------------

* The compiler defines version(Android)

Here's my hello world:
------------
version(Android)
{
    pragma(msg, "Hello Android!");
}

extern(C)
{
    int printf(in char* format, ...);
}

extern(C) void main()
{
    printf("Hello, %s!\n".ptr, "Android".ptr);
}
------------

compile the _Dmodule_ref into hack.o, then use
gdc -nophoboslib hello.d hack.o


More information about the D.gnu mailing list