Linking error with locale symbols

Iain Buclaw ibuclaw at ubuntu.com
Fri Sep 7 23:46:22 PDT 2012


On 8 September 2012 07:40, Iain Buclaw <ibuclaw at ubuntu.com> wrote:
> On 7 September 2012 22:57, Andrej Mitrovic <andrej.mitrovich at gmail.com> wrote:
>> On 9/7/12, Andrej Mitrovic <andrej.mitrovich at gmail.com> wrote:
>>> I'm having linking errors on win32 for a couple of static members in C++
>>> stdlib.
>>
>> I can see now why, g++ by default links statically to stdlib, but gdc
>> links dynamically. The import lib for stdlib doesn't have the
>> '_S_lc_ctype_c_locale' symbol. I'm not sure why though.. shouldn't the
>> static and dynamic libs both have the same exported symbols?
>>
>> As a workaround, how do I force the LD linker to link to the static
>> rather than the dynamic library?
>
> From 'man gcc'
>
> Linker Options
>    object-file-name  -llibrary -nostartfiles  -nodefaultlibs
> -nostdlib -pie -rdynamic -s  -static  -static-libgcc
> -static-libstdc++
>    -shared -shared-libgcc  -symbolic -T script  -Wl,option  -Xlinker
> option -u symbol
>
>
> I would place a bet on -static-libstdc++   :^)
>
>

Actually (It's 7am in the morning and I'm not yet awake) -  This would
need to be implemented in gdc's driver.  I'll send a fix to recognise
this, in the meantime though, you'd use -Wl to send the correct linker
options.


-Wl,-Bstatic,-lstdc++,-Bdynamic


Regards
-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';


More information about the D.gnu mailing list