This is how I build fpc trunk cross compiler:

  echo "Building fpchf-linux from trunk"
  SUBARCH=armv7
CROSSOPT="-dREVINC -dFPC_ARMHF -CX -CpARMV7A -CfVFPV3_D16 -OpARMV7A -O2 -OoFASTMATH -XX -Xs" //CROSSOPT="-dREVINC -dFPC_ARMHF -CX -CpARMV6 -CfVFPV2 -OpARMV6 -O2 -OoFASTMATH -XX -Xs"
  OPT="-dFPC_ARMHF"
make clean buildbase CROSSINSTALL=1 OS_TARGET=linux CPU_TARGET=arm OPT="$OPT" OVERRIDEVERSIONCHECK=1 CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-linux-gnueabihf- || exit 1 sudo make installbase CROSSINSTALL=1 OS_TARGET=linux CPU_TARGET=arm OPT="$OPT" OVERRIDEVERSIONCHECK=1 CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-linux-gnueabihf- || exit 1 sudo mv /usr/local/lib/fpc/3.1.1/ppcrossarm /usr/local/lib/fpc/3.1.1/ppcrossarmhf

Please note that the rtl is fine for Raspberry Pi 2 (the new quad core board) as this is a version that uses armv7 commandset.

For old Raspberry Pi you need to use the commented out CROSSOPT, this will create rtl that is suitable for old raspberries.

You should not try to use fpc 2.6.4 as this compiler does not support armhf. Most likely the 3.0 pre-release will compile the same way, but I never tried.

You need to have cross-binutils installed as you need arm-linux-gnueabihf-* tools to be able to successfully compile.

Michael

Am 18.08.15 um 04:16 schrieb Chris Moody:


On 08/15/2015 08:46 PM, Chris Moody wrote:


On 08/15/2015 07:40 PM, Karoly Balogh (Charlie/SGR) wrote:
Hi,

On Sat, 15 Aug 2015, Chris Moody wrote:

Is there a better guide on how to do this than:
http://wiki.freepascal.org/fpcup#Linux_ARM_cross_compiler  ? specifically
as far as this
sentence is concerned:

   *  Linux/Unix build or install the relevant crossbinutils (Linux, unix)
With Ubuntu/Debian:
- apt-get install binutils-arm-linux-gnueabihf

**snip**
Thanks for that Charlie, I now have that installed. Do I have to do the
compile with fpc? or can I do it via Lazarus?
I'm pretty sure it's possible with Lazarus, but I can't give exact
instructions, because I rarely use Lazarus, I prefer using the compiler
itself directly from the command line.

However, this page has some pointers:
http://wiki.lazarus.freepascal.org/Setup_Cross_Compile_For_ARM#Make_your_first_arm-linux_project_in_Lazarus

Charlie
_______________________________________________

Looks like I need to recompile FPC (or make a special compile of it) to be able to compile to ARM.

That URL you gave me says how to compile it, but not sure about if I need to have some special cross compile code for the CROSSBINDIR=/home/user/lazarus/fpc/binutils/ portion of it, or do I just point it to where Linux installed the items installed with apt-get install binutils-arm-linux-gnueabihf ?

Thanks once again!

Chris

So I tried to compile a special version of FPC for arm, I installed: binutils-2.25

And I got as far as this:

/home/chris/Documents/fp/fpcbuild-2.6.4/binutils/bin/as -o /home/chris/Documents/fp/fpcbuild-2.6.4/fpcsrc/rtl/units/arm-linux/prt0.o arm/prt0.as
arm/prt0.as: Assembler messages:
arm/prt0.as:46: Error: unrecognized symbol type ""
arm/prt0.as:49: Error: expecting operand after ','; got nothing
arm/prt0.as:50: Error: no such instruction: `ldmia sp!,{a2}'
arm/prt0.as:53: Error: no such instruction: `ldr ip,=operatingsystem_parameter_argc' arm/prt0.as:54: Error: no such instruction: `ldr a3,=operatingsystem_parameter_argv'
arm/prt0.as:55: Error: invalid char '[' beginning operand 2 `[ip]'
arm/prt0.as:58: Error: too many memory references for `add'
arm/prt0.as:59: Error: too many memory references for `add'
arm/prt0.as:60: Error: no such instruction: `ldr ip,=operatingsystem_parameter_envp'
arm/prt0.as:62: Error: invalid char '[' beginning operand 2 `[a3]'
arm/prt0.as:63: Error: invalid char '[' beginning operand 2 `[ip]'
arm/prt0.as:66: Error: no such instruction: `ldr ip,=__stkptr'
arm/prt0.as:67: Error: invalid char '[' beginning operand 2 `[ip]'
arm/prt0.as:69: Error: too many memory references for `sub'
arm/prt0.as:72: Error: no such instruction: `bl PASCALMAIN'
arm/prt0.as:75: Error: unrecognized symbol type ""
arm/prt0.as:78: Error: no such instruction: `swi 0x900001'
arm/prt0.as:79: Error: no such instruction: `b _haltproc'
arm/prt0.as:82: Error: unrecognized symbol type ""
arm/prt0.as:84: Error: no such instruction: `ldr r0,=operatingsystem_result'
arm/prt0.as:85: Error: no such instruction: `ldrb r0,[r0]'
arm/prt0.as:86: Error: expecting operand after ','; got nothing
arm/prt0.as:87: Error: no such instruction: `swi 0x0'
arm/prt0.as:88: Error: no such instruction: `b _haltproc_eabi'
make[6]: *** [prt0.o] Error 1
make[6]: Leaving directory `/home/chris/Documents/fp/fpcbuild-2.6.4/fpcsrc/rtl/linux'
make[5]: *** [linux_all] Error 2
make[5]: Leaving directory `/home/chris/Documents/fp/fpcbuild-2.6.4/fpcsrc/rtl'
make[4]: *** [rtl] Error 2
make[4]: Leaving directory `/home/chris/Documents/fp/fpcbuild-2.6.4/fpcsrc/compiler'
make[3]: *** [cycle] Error 2
make[3]: Leaving directory `/home/chris/Documents/fp/fpcbuild-2.6.4/fpcsrc/compiler'
make[2]: *** [compiler_cycle] Error 2
make[2]: Leaving directory `/home/chris/Documents/fp/fpcbuild-2.6.4/fpcsrc'
make[1]: *** [build-stamp.arm-linux] Error 2
make[1]: Leaving directory `/home/chris/Documents/fp/fpcbuild-2.6.4/fpcsrc'
make: *** [fpcsrc/build-stamp.arm-linux] Error 2



_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to