[fpc-pascal] Cross compiling x86_64 on i386 Linux.

Bruce Tulloch bruce at causal.com
Thu May 31 02:39:56 CEST 2012

On 31/05/12 01:40, Jonas Maebe wrote:
>> I'm thinking that ld should be looking at:
>>  /mnt/engels/lib/libpthread.so.0
>> but according to the error message it's looking at:
>>  /lib/libpthread.so.0
>> which read literally would explain the error.
> That's correct. It seems that -XR isn't completely implemented on Linux in the compiler. Could you try, *instead* of using -XR, to use -k--sysroot=/full/path/to/crossroot/ ?

I replaced the -XR option with


and that works (ie, you are correct, -XR does not appear to pass the
sysroot to the linker) but there's another catch. Now I'm getting:

  x86_64-linux-ld: skipping incompatible /mnt/engels/usr/lib64/libdl.so
  when searching for -ldl

this library (on /mnt/engels) **is compatible** but it is a symlink:

  /usr/lib64/libdl.so -> /lib/libdl.so.2

Given the specified --sysroot the linker should be looking at


but I'm guessing it's looking at


which does not right to me. It looks like --sysroot is not analogous to
chroot as far as the linker is concerned and symlinks are dereferenced

For completeness I added


as well, so all the (other) linker search paths are prepended with
/mnt/engels. This ended up producing a slightly errnoeous message:

  x86_64-linux-ld: skipping incompatible /mnt/engels/usr/lib64
  //libdl.so when searching for -ldl

Note the "//" in the reported path name before libdl.so.

This time it also reported the same error for glibc:

  x86_64-linux-ld: skipping incompatible /mnt/engels/usr/lib64//libglib-
  2.0.so when searching for -lglib-2.0

again with the erroneous "//".

This glibc library is also a symlink to the /lib directory on engels.

I tried adding -k-rpath-link options to tell the linker to look in the
relevant paths under /mnt/engels but all to no avail.


More information about the fpc-pascal mailing list