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