Creating a shared library under Linux?

Alex Rønne Petersen alex at lycus.org
Fri Jul 27 00:33:47 PDT 2012


On 27-07-2012 09:31, Jens Mueller wrote:
> Alex Rønne Petersen wrote:
>> On 27-07-2012 07:23, Jens Mueller wrote:
>>> Hi,
>>>
>>> I've read several threads that about creating shared libraries. But I
>>> could not make it work.
>>> Does anybody know how to create a shared library? I don't care which
>>> compiler I have to use to accomplish it.
>>>
>>> Jens
>>>
>>
>> Well, all three compilers (DMD, GDC, LDC) can create shared
>> libraries at this point. But DMD doesn't actually ship libphobos2
>> (druntime+phobos) as a shared library yet, so this is not going to
>> work out so well. If, however, you don't use stock libphobos2, you
>> can pass -shared -fPIC to create a shared library.
>
> But I can build druntime+phobos as shared libraries and then it should
> work with dmd?

No, exceptions and TLS will still be broken, and the runtime doesn't 
know how to deal with shared libraries as they are loaded, so the GC 
might break in funny ways.

>
>> GDC and LDC, as far as I know, can both create shared libraries. GDC
>> does it with the standard options you'd pass to GCC. LDC's command
>> line is very similar to DMD's if memory serves.
>
> I tried both gdc and ldc but failed. I will write more specifically what
> I did later.
>
>> But (another one!): druntime is not yet ready to handle shared
>> libraries properly. This means that exceptions thrown across library
>> boundaries, TLS, etc are not likely to work properly.
>
> I think I can avoid all of these limitations.

Well, so long as you don't use exceptions and TLS, it might work. But I 
wouldn't recommend relying on it.

>
>> So, in short: If you're using stock libphobos2, don't bother. If
>> you're not using stock libphobos2, you can probably trivially create
>> shared libraries.
>
> I see. Then I will try to build a shared libphobos2 first.
> Many thanks.
>
> Jens
>


-- 
Alex Rønne Petersen
alex at lycus.org
http://lycus.org


More information about the Digitalmars-d mailing list