Hi Tony, I use Debian as my Debian derived distro :-) I agree a minimal chroot environment for each target is a good solution but it's predicated on running a 64-bit kernel on the host (which I am trying to avoid so I can use this setup on a 32-bit capable netbook).
Looks like I might have to abandon the idea (cross compiling for a x86_64 target on a i386 host) and upgrade my mobile development platform to something with an x86_64 capable CPU in it :-/ I'll see if Jonas has any more ideas. Cheers, Bruce. On 29/05/12 18:40, Tony Whyman wrote: > Bruce, > > If you are using a Debian derived distribution such as Ubuntu, you might > find it easier to use debootstrap to create a 64 bit environment on your > system and compile the program in that environment (see > https://help.ubuntu.com/community/DebootstrapChroot for a guide). Then > you can be sure that you have all the correct libraries in their > standard paths, etc. > > In my set up, I compile for both 64 bit and 32 bit targets on a 64 bit > machine and have separate debootstrap (chroots) for each target > environment rather than compile in the development environment. This > ensures that the final compilation takes place in a known clean > environment. I also have a chroot for a win32 cross compiler. > > Once you have created the chroot for each target, all you need to do is > to install the fpc debs in the appropriate environment (64 bit fpc for > the 64 bit environment, 32 bit for the 32 bit environment), install any > other libraries you need for the distribution repository and then > compile the software in each chroot separately. The result will be > executables built for each target and built in a clean environment. If > you also want to generate distribution packages (debs), this is also the > best way to go about it. > > Regards > > Tony Whyman > MWA Software > > > > > On 29/05/12 03:19, Bruce Tulloch wrote: >> Closer, but not quite there yet... >> >> To get this going I've (sshfs) mounted a 64 bit system on /mnt/engels >> and then attempted to cross-compile on the 32 bit system with: >> >> fpc -MDelphi -Scgi -CX -O3 -OoUNCERTAIN -OoREGVAR \ >> -Tlinux -Px86_64 -Xs -XX -va -l \ >> -dLCL -dLCLgtk2 -XR/mnt/engels >> >> This compiles but fails at the linker: >> >> Searching file /mnt/engels/usr/lib64/crtn.o... found >> Searching file /usr/local/opt/binutils/bin/x86_64-linux-ld... found >> Using util /usr/local/opt/binutils/bin/x86_64-linux-ld >> /usr/local/opt/binutils/bin/x86_64-linux-ld: skipping incompatible >> /lib/libpthread.so.0 when searching for /lib/libpthread.so.0 >> /usr/local/opt/binutils/bin/x86_64-linux-ld: cannot find >> /lib/libpthread.so.0 >> Error: Error while linking >> Fatal: There were 1 errors compiling module, stopping >> >> The linker >> >> /usr/local/opt/binutils/bin/x86_64-linux-ld >> >> was created using (an appropriately modified) >> >> fpcfixes_2.6/cross/buildcrossbinutils >> >> i.e. built to run on i386 and target x86_64 >> >> MYINTEL=i386 >> TARGETS_X86_64="linux" >> >> and the pthread library is (presumably, given the -XR option) >> >> /mnt/engels/lib/libpthread.so >> >> which file reports as >> >> libpthread-2.11.3.so: ELF 64-bit LSB shared object, x86-64, version >> 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux >> 2.6.18, not stripped >> >> How can I find out why x86_64-linux-ld reports it as incompatible? >> >> Many thanks, Bruce. >> >> On 05/28/12 23:02, Jonas Maebe wrote: >>> On 28 May 2012, at 14:56, Bruce Tulloch wrote: >>> >>>> Am I correct to assume that if I drag in the x86_64 libraries I need >>>> from another x86_64 system, put them in a local directory and then >>>> reference then using the -XR option I can make this setup work? >>> -XR is for pointing the compiler/linker to the top of a complete >>> sysroot (i.e., a hierarchy with /lib, /usr/lib etc), not to a >>> directory with just few handpicked libraries. For the latter, use the >>> -Fl command line switch instead, possibly combined with -Xd (to >>> prevent the compiler from passing the default system directories as >>> search paths to the linker). >>> >>> And yes, that should indeed work fine. >>> >>> >>> Jonas_______________________________________________ >>> fpc-pascal maillist - fpc-pascal@lists.freepascal.org >>> http://lists.freepascal.org/mailman/listinfo/fpc-pascal >> _______________________________________________ >> fpc-pascal maillist - fpc-pascal@lists.freepascal.org >> http://lists.freepascal.org/mailman/listinfo/fpc-pascal > > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal