<div dir="ltr"><div><div><div><div><div><div><div>Starting with a simple test program arm-test.pas:<br><br>program test;<br>begin<br>  writeln('DATE ',{$i %DATE%});<br>  writeln('FPCTARGET ',{$i %FPCTARGET%});<br>




  writeln('FPCTARGETCPU ',{$i %FPCTARGETCPU%});<br>  writeln('FPCTARGETOS ',{$i %FPCTARGETOS%});<br>  writeln('FPCVERSION ',{$i %FPCVERSION%});<br>end.<br><br></div>I can cross-compile:<br><br>Free Pascal Compiler version 2.7.1 [2013/05/20] for arm<br>




Copyright (c) 1993-2013 by Florian Klaempfl and others<br>Target OS: Linux for ARMHF<br>Compiling arm-test.pas<br>Assembling test<br>Linking arm-test<br>8 lines compiled, 0.1 sec<br><br></div>successfully producing this:<br>




<br>arm-test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.0.0, stripped<br><br></div>which when executed produces:<br><br>DATE 2013/05/23<br>FPCTARGET arm<br>FPCTARGETCPU arm<br>FPCTARGETOS Linux<br>




FPCVERSION 2.7.1<br><br></div>All good, the ARM cross-compiler is working.<br><br></div>However, if I simply add this uses clause:<br><br></div>uses<br></div>  cthreads;<br><br>the program compiles fine but fails when linking:<br>


<br>Linking arm-test-threads<br>/usr/local/lib/fpc/2.7.1/<div>units/arm-linux/rtl/cthreads.o: In function `CTHREADS_$$_LOADPTHREADS$$BOOLEAN':<br>cthreads.pp:(.text.n_cthreads_$$_loadpthreads$$boolean+0xc):
 warning: Using 'dlopen' in statically linked applications requires at 
runtime the shared libraries from the glibc version used for linking<br>
/usr/local/opt/chroot/raspbian/rootfs/usr/lib/arm-linux-gnueabihf//libdl.a(dlopen.o): In function `dlopen':<br>(.text+0xc): undefined reference to `__dlopen'<br>/usr/local/opt/chroot/raspbian/rootfs/usr/lib/arm-linux-gnueabihf//libdl.a(dlclose.o): In function `dlclose':<br>


(.text+0x0): undefined reference to `__dlclose'<br>/usr/local/opt/chroot/raspbian/rootfs/usr/lib/arm-linux-gnueabihf//libdl.a(dlsym.o): In function `dlsym':<br>(.text+0xc): undefined reference to `__dlsym'<br>


/usr/local/opt/chroot/raspbian/rootfs/usr/lib/arm-linux-gnueabihf//libdl.a(dladdr.o): In function `dladdr':<br>(.text+0x0): undefined reference to `__dladdr'<br>An error occurred while linking arm-test-threads<br>

<br></div><div>When compiling the same code native (x86_64) or cross compiled to Linux i386, this does not happen (i.e the program links and executes fine). The ARM linux system against which I'm linking is raspbian for RPi. <br>
<br></div><div>The relevant compiler configuration is:<br><br>#IFDEF CPUARM<br>-Xd <br>-k--sysroot=/usr/local/opt/chroot/raspbian/rootfs<br>-Fl/usr/local/opt/chroot/raspbian/rootfs/lib/arm-linux-gnueabihf<br>-Fl/usr/local/opt/chroot/raspbian/rootfs/usr/lib/arm-linux-gnueabihf<br>
-FD/usr/local/opt/binutils/bin<br>-XP$FPCTARGET-<br>#ENDIF<br><br>What am I doing wrong?<br><br></div>Thanks, Bruce.</div>