XOMB operating system

jerro a at a.com
Thu May 31 02:11:09 PDT 2012


On Thursday, 31 May 2012 at 08:57:37 UTC, jerro wrote:
> On Thursday, 31 May 2012 at 03:04:58 UTC, tim krimm wrote:
>>
>> I have been looking at the xomb bare bones (XBB) source code.
>> It looks like they have a bare bones library, no Phobos.
>> They used ldc for their compiler.
>>
>> 1) Can the same things be done with the DMD version 2 compiler?
>>
>> 2) Will DMD work without the Phobos library?
>>
>> 3) What minimal set of modules do you need for DMD?
>
> GDC has the -nophoboslib flag. So you can write a D file that 
> doesn't use druntime or phobos:
>
> extern(C) int puts(const char *);
>
> extern(C) int main()
> {
>     puts("Hello world!");
>     return 0;
> }
>
> and compile it with:
>
> gdc -nophoboslib hello.d
>
> The linker will complain about undefined reference to 
> _Dmodule_ref. So you need to write a c file like with just 
> "void* _Dmodule_ref;" in it and compile it to object file with 
> gcc -c dummy.c. Then you can do
>
> gdc -nophoboslib hello.d dummy.o
>
> And it works.

I just remembered you can do something similar with DMD, too, 
using -defaultlib. Make a static library containing just 
_Dmodule_ref:


echo "void* _Dmodule_ref;" | gcc -x c - -c -o dmodule_ref.o
ar cr libdmodule_ref.a dmodule_ref.o

Now put it somewhere where the linker can find it. Now you can 
compile d programs without druntime like this:

dmd hello.d -defaultlib=dmodule_ref



More information about the Digitalmars-d mailing list