libphobos.so and loading libraries at runtime

FreeSlave freeslave93 at gmail.com
Sun Jan 5 12:47:43 PST 2014


import core.runtime;

int main()
{
     Runtime.loadLibrary("does not care");
     Runtime.unloadLibrary(null);
     return 0;
}

When I try to compile this code with 'dmd main.d', I get errors

main.o: In function 
`_D4core7runtime7Runtime17__T11loadLibraryZ11loadLibraryFxAaZPv':
main.d:(.text._D4core7runtime7Runtime17__T11loadLibraryZ11loadLibraryFxAaZPv+0x4d): 
undefined reference to `rt_loadLibrary'
main.o: In function 
`_D4core7runtime7Runtime19__T13unloadLibraryZ13unloadLibraryFPvZb':
main.d:(.text._D4core7runtime7Runtime19__T13unloadLibraryZ13unloadLibraryFPvZb+0x8): 
undefined reference to `rt_unloadLibrary'

But it's built without errors when I separate compile and link 
parts:
dmd -c main.d
gcc main.o -lphobos2 -o main

I checked libraries with nm utility and actually found no such 
symbols in static version of libphobos. But shared one has these 
symbols.

Well, I'm aware of that runtime loading requires shared version 
of phobos2 to avoid duplicating of D runtime. But why does dmd 
use static linking by default? Is shared version of phobos still 
experimental? Anyway we need some remarks in documentation about 
the lack of these functions in static version of phobos.


More information about the Digitalmars-d-learn mailing list