DMD as cross-compiler
elronnd at elronnd.net
Thu Nov 12 18:58:56 UTC 2020
On Thursday, 12 November 2020 at 06:42:00 UTC, Jacob Carlborg
> Unfortunately it won't be that simple for D. D took the easy
> way out and relies both on the C standard library and other
> platform specific libraries implemented in C. While it's easy
> to cross-compile and object file, linking will not be as easy.
FWIW I started working on some stubs for a pure-d libc a while
back - https://github.com/moon-chilled/dlibc/. If it were
completed and integrated into druntime--or, at least, if enough
of it were completed to support druntime+phobos--then it would
make for a much nicer cross-compiling experience.
> Also, on macOS they're cheating. Because they cannot ship the
> SDK, they solve the linking problem by allowing undefined
> symbols. I don't know if Go does the same.
Perhaps a better solution would be to link to a stub dylib of
libc? (Assuming macos libc has a stable ABI.)
> There's LLD, which works on Windows and Linux, but it doesn't
> work for macOS.
As of about a year and a half ago, its status was
> LLD for Mach-O has bitrotted significantly and isn't really
> functional anymore (beyond the most basic programs). I'd
> recommend sticking with ld64 as the linker.
so the situation may have improved in the mean time; looking at
see a fair amount of activity. (In particular, commit 2e8e1bd
adds support for stub dylibs, relevant to my above proposal.)
More information about the Digitalmars-d