Ubuntu dmd 2.065 amd64 linkage problem.
Mathias LANG
pro.mathias.lang at gmail.com
Sun Mar 16 05:55:03 PDT 2014
On Sunday, 16 March 2014 at 02:12:37 UTC, Carl Sturtivant wrote:
>
> Back at 2.062 I was able to force the whole of D's
> runtime/phobos into an executable which was exactly what I
> wanted for a specific project containing not just D but around
> 50,000 lines of C. (This is to do with having dynamic libraries
> link back to the executable when they're loaded with dlopen, so
> they don't need their own runtime/phobos on board.) However, at
> 2.065 this doesn't happen any more. I need this same linkage
> with 2.065. Previously I used
>
> -Wl,--whole-archive -lphobos2 -Wl,--no-whole-archive
>
> on a gcc command line to link all the objects in the project
> along with libphobos2, with
>
> -lcurl -lpthread -lm -lrt
>
> to satisfy that linkage, and this had the desired effect. But
> now this doesn't do the job of linking the whole of D's runtime
> & phobos any more. Any suggestions how I can get the old result
> with 2.065?
DMD started to support shared lib on linux from 2.063.
This may be useful: http://dlang.org/dll-linux.html
Also note that if you are only writting the shared lib and not
the client, it would be easyier to bootstrap it using gcc's
attributes (see
http://stackoverflow.com/questions/9759880/automatically-executed-functions-when-loading-shared-libraries
).
Else, there is a Runtime.loadLibrary (which will be improved
later), to load and start a D shared library (if you just dlopen,
static ctor & stuff won't be initialized).
More information about the Digitalmars-d-learn
mailing list