Linux -> Windows crosscompiler
Joakim via digitalmars-d-ldc
digitalmars-d-ldc at puremagic.com
Mon May 15 10:37:30 PDT 2017
On Monday, 15 May 2017 at 09:27:36 UTC, Marvin Gülker wrote:
> Hi everyone,
> I am mainly a Linux developer and find working on Windows
> rather complicated. My most recent try confirmed that; I wanted
> to write a D application using GraphicsMagick's C interface --
> now I have a mixture of compilers on my Windows machine (MinGW
> GCC, Msys2 GCC, MSVC, LDC, DMD) and I still get linking errors.
Are you mixing object files produced by different D compilers?
That won't work, you need to compile all your D code with a
single D compiler.
> That only for the context. Since I previously had good
> experience in
> using a Linux -> Windows crosscompiler for regular C/C++
> (MXE) I thought
> it could be possible to have something similar for D. Until now
> I have
> been using dmd, but Internet research told me dmd cannot be
> built as a
> crosscompiler. GDC appears to be a one-man show and is still
> upstream GCC approval, so I decided to go with LDC.
It can be done with dmd, but it would require some work on the
> Thus, is it possible to build an LDC crosscompiler that is
> hosted on x86_64 Linux and targets i686/x86_64 Windows? If so,
> how? I didn't find any information on the topic, people
> appeareantly only ever want to target ARM (cell phones?), which
> is not what I am interested in.
Of course, by default ldc is a cross-compiler for all other
platforms it officially supports. You simply need to pass the
right llvm triple to ldc, similar to how it's done for the ARM
The bigger issue is getting the cross-compiled stdlib and a
cross-linker, that will link for Windows but run on linux. You
can probably just take the pre-built stdlib from the ldc for
Windows package, but you're on your own for finding a
cross-linker. Maybe lld would work?
More information about the digitalmars-d-ldc