Create D portable binary

Cym13 cpicard at openmailbox.org
Fri Dec 8 08:21:34 UTC 2017


On Friday, 8 December 2017 at 06:37:36 UTC, Adam D. Ruppe wrote:
> On Friday, 8 December 2017 at 05:16:22 UTC, Fra Mecca wrote:
>> Is there a way to compile a project and deploying it as a 
>> single statically linked binary?
>
> A default build of a D program is *reasonably* compatible. All 
> its dependencies are core operating system components like 
> libc. Now, there can certainly be libc version 
> incompatibilities, but there's a decent chance it will just 
> work.
>
> I'm pretty sure this is the exact same situation Go is in; the 
> default Go and D builds link the same way.


I was curious so I just tried. Building a hello world with "go 
build" (I just litterally did what was on 
https://gobyexample.com/hello-world) produces a file that is not 
a dynamic executable. There is no dependency.

For comparison building a similar hello world with dmd and no 
options gives the followig dependencies (thanks ldd):

         linux-vdso.so.1 (0x00007fffd02aa000)
         libpthread.so.0 => /usr/lib/libpthread.so.0 
(0x00007f45e5e69000)
         libm.so.6 => /usr/lib/libm.so.6 (0x00007f45e5b1d000)
         librt.so.1 => /usr/lib/librt.so.1 (0x00007f45e5915000)
         libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f45e5711000)
         libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 
(0x00007f45e54fa000)
         libc.so.6 => /usr/lib/libc.so.6 (0x00007f45e5142000)
         /lib64/ld-linux-x86-64.so.2 => 
/usr/lib64/ld-linux-x86-64.so.2 (0x00007f45e6087000)

(And using -L-static produces an error because of an 
incompatibility with -pie... I'm sure it's workable I just didn't 
take the time to look it up yet)


More information about the Digitalmars-d-learn mailing list