This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cross compiling for Linux on Windows (ld linker output file won't run as executable on linux and has undefined symbols)


Hi Kim,

The problem is, the output file is slightly different
than the one produced on linux and it won't run as an executable. I
noticed, for example, that in the version linked on windows there is the
undefined symbol "printf" which appears to have become "puts" instead in
the linux version.

I suspect that the printf/puts variance may be a red herring.

Anyway I'm wondering if anyone knows what is happening here.

k@system:/shared$ ./Test
bash: ./Test: No such file or dire

What happens if you run "file ./Test" ?
What happens if you run "ldd ./Test" ?


Also it appears that you are linking against different math's libraries:

Linking on Windows:
attempt to open I:\Linux\libs\lib\x86_64-linux-gnu\libm-2.17.so succeeded

Linking on linux:
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libm.so succeeded


And that as a result you are pulling in the wrong C library:

> Linking on Windows:
ld-linux-x86-64.so.2 needed by I:/Linux/libs/lib/x86_64-linux-gnu/libc-2.17.so


Also - which version of the linker are you using ? If it is an old version then that may be causing you problems.

Cheers
  Nick


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]