dynamic library building and loading

Daniel Kozak kozzi11 at gmail.com
Wed Sep 26 23:26:36 PDT 2012


Now I try it, and it is not required to build shared variant of 
druntime and phobos, only rebuild it with -fPIC



On Thursday, 27 September 2012 at 06:12:38 UTC, Daniel Kozak 
wrote:
> Hi,
>
> I have same issue, but it is possible make shared library,
> first of all you have to make shared variant of druntime and 
> phobos library, than it should work ok.
>
> Now I am at work, when I come back home I will post some more 
> details about this.
>
> Daniel Kozak
>
> On Wednesday, 26 September 2012 at 17:57:29 UTC, Andrei 
> Alexandrescu wrote:
>> Haven't done any dynamic linking with D and I need to. I'm 
>> using dmd 2.058/Linux at work to build and use dynamic 
>> libraries. Here's my attempt:
>>
>> *** Makefile
>> all: main lib.so
>>
>> main: main.d
>> 	dmd main
>>
>> lib.so: lib.d
>> 	dmd -fPIC -shared lib.d -of./lib.so
>>
>> *** lib.d
>> extern(C) int fun(string s)
>> {
>>    return 42;
>> }
>>
>> *** main.d
>> import std.stdio;
>> void main()
>> {
>> }
>>
>> Running make prints:
>>
>> dmd -fPIC -shared lib.d -of./lib.so
>> /usr/bin/ld: 
>> /mnt/vol/engshare/third-party/centos5.2-native/dmd/dmd-2.058-centos5.2-native/bin/../../../../centos5.2-native/phobos/phobos-2.058/ffad884/generated/linux/release/64/libphobos2.a(minfo.o): 
>> relocation R_X86_64_32 against `a local symbol' can not be 
>> used when making a shared object; recompile with -fPIC
>> /mnt/vol/engshare/third-party/centos5.2-native/dmd/dmd-2.058-centos5.2-native/bin/../../../../centos5.2-native/phobos/phobos-2.058/ffad884/generated/linux/release/64/libphobos2.a: 
>> could not read symbols: Bad value
>> collect2: ld returned 1 exit status
>>
>> What steps do I need to take to get off the ground?
>>
>>
>> Thanks,
>>
>> Andrei




More information about the Digitalmars-d mailing list