[fpc-pascal] The strange case of arm-linux-ld: skipping incompatible
Felipe Monteiro de Carvalho
felipemonteiro.carvalho at gmail.com
Sat Nov 26 09:05:39 CET 2011
Hello,
Quite a number of people already reported having problems with this in
the lazarus forum when cross-compiling for Android and yesterday it
was my turn to hit this. I searched quite a bit in old threads but I
haven't seen any satisfactory resolution, and it seams that the
problem isnt so common outside fpc.
Basically I have 2 computers, which AFAIK have nearly the same set of tools:
1> FPC 2.6 RC1
2> My snapshot FPC 2.5.1 cross-compiler x86-linux -> arm-linux
3> Lazarus from SVN
4> Mageia Linux 1
5> Building the project lazarus-ccr/examples/androidlclv2
6> Android NDK r5
I think they have cross-binutils from the same rpm too, but I still
have to recheck this.
The first computer is a real desktop and there everything works fine.
I can built the application normally linking against the NDK
The second one is a virtual machine running in Parallels Desktop, but
Parallels is nearly perfect ... I am yet to find a bug which is caused
due to the virtual machine. And a lot of people have been reporting
this in the forum, so it seams a common problem which affects real
computers too.
In my case even the directory structure in both machines is the same,
so I pass my library -Fl path in both like this:
/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib/
There are no changes here in anything of my source project and lazarus
source, I checked with "svn diff", but in virtual machine I get the
infamous errors from arm-linux-ld:
Compiling resource
/home/felipe/Programas/lazarus-ccr/examples/androidlclv2/lib/arm-linux/androidlcltest.or
Linking /home/felipe/Programas/lazarus-ccr/examples/androidlclv2/android/libs/armeabi/libmain.so
/usr/bin/arm-linux-ld: warning:
/home/felipe/Programas/lazarus-ccr/examples/androidlclv2/android/libs/armeabi/link.res
contains output sections; did you forget -T?
/usr/bin/arm-linux-ld: skipping incompatible /usr/lib//libc.so when
searching for -lc
/usr/bin/arm-linux-ld: skipping incompatible /usr/lib/crtn.o when
searching for /usr/lib/crtn.o
/usr/bin/arm-linux-ld: cannot find /usr/lib/crtn.o
androidlcltest.lpr(24) Error: Error while linking
androidlcltest.lpr(24) Fatal: There were 1 errors compiling module, stopping
arm-linux-ld seams to have a fixed idea about where to find libc and
it refuses to search in my path from -Fl, but it finds libandroid.so
correctly in the provided path, which is even more confusing.
I have trying all of the following things to try to fix it:
1> First I tryed to change that -Fl to
/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/
(with lib/)
Now it will complain that it can't find libandroid.so, so this shows
that the previously utilized path is valid and recognized
2> I tryed to change /etc/ld.conf (or something like that). Didn't
help, so I restored it back
3> I tryed:
export PATH=/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib:$PATH
didn't help
4> I tryed to change the NDK between v5 and v7 to no help
5> I tryed both FPC 2.4.4 and FPC 2.6 as the x86-linux compiler in
case the fpc binary was eating parameters or something like that (the
arm-linux one never changes, and cannot be changed and is precisely
the same in both cases, it was built in the real computer, but since
the time it was built I have formatted my / partition and installed a
newer version of my Linux)
6> I tryed:
export LIBPATH=/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib
didn't help
7> Google didn't bring anything useful also, threads from C users seam
to solve the issue with gcc options. example:
http://stackoverflow.com/questions/1964880/cannot-find-lib-libc-so-6
Points to using "-sysroot" from gcc
--
Felipe Monteiro de Carvalho
More information about the fpc-pascal
mailing list