Thread overview
Using phobos as shared library for multiple binaries
Dec 05, 2015
Ralf
Dec 05, 2015
Adam D. Ruppe
Dec 06, 2015
tcak
December 05, 2015
Hi,

I've written several small command-line utilities in D that are to be shipped together in one package. Each one of them only would be only a few kB in size, but they end up being ~1Mb, I assume because every one links statically parts of the standard library.

How can this be improved?

Are there binary builds of the standard library (for OS X) somewhere and an option to tell the compiler to link to this shared library?

Alternatively, is there a way to build a shared library that all the binaries can use together so they can share the common code?

Greetings,

Ralf
December 05, 2015
On Saturday, 5 December 2015 at 21:49:52 UTC, Ralf wrote:
> I've written several small command-line utilities in D that are to be shipped together in one package.

I'm not sure if shared lib support is on Mac or not (I know it is on Linux but mac is different...).

But do they need to actually be separate executables? You could make them all one program and switch(args[0]) {} to see which name it was called by. Symlink all the various names to the one executable and the user will never know.
December 06, 2015
On Saturday, 5 December 2015 at 21:49:52 UTC, Ralf wrote:
> Hi,
>
> I've written several small command-line utilities in D that are to be shipped together in one package. Each one of them only would be only a few kB in size, but they end up being ~1Mb, I assume because every one links statically parts of the standard library.
>
> How can this be improved?
>
> Are there binary builds of the standard library (for OS X) somewhere and an option to tell the compiler to link to this shared library?
>
> Alternatively, is there a way to build a shared library that all the binaries can use together so they can share the common code?
>
> Greetings,
>
> Ralf

Some links for you:
http://dlang.org/dmd-osx.html   Check -defaultlib

http://dlang.org/dll-linux.html    This is for Linux, but check the last code example. It can help. I did what you ask in Linux, it works, but don't have knowledge about OS X.