linking weak symbols on interix
Martin Koeppe
mkoeppe@gmx.de
Sun Jul 2 09:44:00 GMT 2006
Hi Ross,
> The simplest solution may be to use the same source that Microsoft
> used to build its version of ld. It should be available from
> Microsoft.
yes and no. The source is available, in the same archive where the
interix tools are. However they mixed together a cvs snapshot of
binutils (pre-2.14) and gcc (pre-3.3) from 2002, then apply several
patches (these are separate and applied at build time) and changed
everything so that it can be compiled with their ms c compiler.
I tried to extract the binutils sources and to apply the patches, but
some of the patches don't apply out of the box and it doesn't build on
linux as cross config. I didn't try, because it seems not to be easy,
to rebuild the ms ld natively on interix.
I was happy that gcc 4.1 as cross compiler produces usable .o files,
so I thought ld could / should be fixed to work, too.
I also tried to build a non-cross ld 2.17 on interix. It builds fine,
but using it fails with the exactly same issue.
> On the other hand, what you're doing may not be legal. Microsoft
> generally doesn't permit their products be used on non-Microsoft
> operating systems. While the GPL would permit you to use their ld
> and libgcc.a on Linux, their EULA may not permit you to use their
> libc.a.
I only used their libgcc.a to exclude that my cross compiled one from
gcc 4.1 may have a bug in it. For libc.a I don't plan to use, i.e.
execute, it on linux, e.g. in an emulator or wine or so, I only want
to link on linux and execute on windows. Might this too be not legal?
Nevertheless there is a libc.so in interix, and of course I would
prefer to use that. Don't know if that makes a difference in legality,
however. Currently I want to produce a somehow working executable
first.
Martin
More information about the Binutils
mailing list