Thread overview
Distribution of D apps
Jan 20, 2016
Dibyendu Majumdar
Jan 20, 2016
Rikki Cattermole
Jan 20, 2016
Adam D. Ruppe
Jan 21, 2016
W.J.
Jan 21, 2016
FreeSlave
Jan 21, 2016
W.J.
January 20, 2016
Hi,

I am trying to understand the options for distributing a D app to users. My assumption is that only the shared libraries and binaries need to be distributed, and I need to include the D libraries. Is this correct?

Thanks and Regards
Dibyendu







January 21, 2016
On 21/01/16 5:01 AM, Dibyendu Majumdar wrote:
> Hi,
>
> I am trying to understand the options for distributing a D app to users.
> My assumption is that only the shared libraries and binaries need to be
> distributed, and I need to include the D libraries. Is this correct?
>
> Thanks and Regards
> Dibyendu

Binaries such as such as shared libraries do indeed need to be packaged in the distribution.

Static library files do not need to be distributed however.
January 20, 2016
By default, a binary compiled with D will have the standard library statically linked in, so all you need to distribute are other shared libs you choose to use (which might include curl btw if you use the std.net.curl functions).

But many .exes from D can be distributed alone and expected to work.
January 21, 2016
On Wednesday, 20 January 2016 at 16:01:11 UTC, Dibyendu Majumdar wrote:
> Hi,
>
> I am trying to understand the options for distributing a D app to users. My assumption is that only the shared libraries and binaries need to be distributed, and I need to include the D libraries. Is this correct?
>
> Thanks and Regards
> Dibyendu

Hi,

On Linux you can use 'ldd' to print shared library dependencies.
On Windows you can use Dependency Walker.
On Mac there's likely a similar program.
Mind also that license terms for distributing libraries apply.


January 21, 2016
On Thursday, 21 January 2016 at 13:26:15 UTC, W.J. wrote:
> On Wednesday, 20 January 2016 at 16:01:11 UTC, Dibyendu Majumdar wrote:
>> Hi,
>>
>> I am trying to understand the options for distributing a D app to users. My assumption is that only the shared libraries and binaries need to be distributed, and I need to include the D libraries. Is this correct?
>>
>> Thanks and Regards
>> Dibyendu
>
> Hi,
>
> On Linux you can use 'ldd' to print shared library dependencies.
> On Windows you can use Dependency Walker.
> On Mac there's likely a similar program.
> Mind also that license terms for distributing libraries apply.

OS X has otool -L

Note that these tools don't show runtime dependencies. Many libraries can be loaded at runtime, especially when you use derelict-like modules. These libraries in their turn may depend on others, etc.
January 21, 2016
On Thursday, 21 January 2016 at 14:03:03 UTC, FreeSlave wrote:
> On Thursday, 21 January 2016 at 13:26:15 UTC, W.J. wrote:
>> On Wednesday, 20 January 2016 at 16:01:11 UTC, Dibyendu Majumdar wrote:
>>> [...]
>>
>> Hi,
>>
>> On Linux you can use 'ldd' to print shared library dependencies.
>> On Windows you can use Dependency Walker.
>> On Mac there's likely a similar program.
>> Mind also that license terms for distributing libraries apply.
>
> OS X has otool -L
>
> Note that these tools don't show runtime dependencies. Many libraries can be loaded at runtime, especially when you use derelict-like modules. These libraries in their turn may depend on others, etc.

Yes, except for Dependency Walker, which, if I recall, inspects the executable and can recognize runtime dependencies via LoadLibrary calls.