%general-entities; ]> Build Variables Setting Host and Target During the building of the cross-compile tools, you will need to set a few variables that will be dependent on your particular needs. You will need to select the target triplet for the target architecture, the CPU endianess, the CPU architecture, the CPU mode, the CPU floating point hardware availability, and (if available) the type of floating point hardware. If you do not know what values can be chosen for each of these, you can use the tables at the bottom of this page as a reference. Most ARM processors are little endian, it is a safe choice. If your processor is an ARM9, good choices include: triplet of armv5l-unknown-linux-uclibeabi, ARM arch of armv5t, float of softfp, and fpu of either none or softvfp. ARM9 processors do not always have hardware floating point abilities. If your processor is a Cortex-A8 or Cortex-A9, good choices include: triplet of armv7a-unknown-linux-uclibceabi, ARM arch of armv7-a, float of hard, and fpu of vfpv3-d16. First, set the host and target triplets: export CLFS_ARCH=arm export CLFS_ENDIAN="[endianess]" Choose the ARM architecture (see table below) and mode of your CPU: export CLFS_ARM_ARCH="[architecture]" export CLFS_ARM_MODE="[arm or thumb]" If your target CPU has hard floating point support (not all ARM CPUs do), set the following CLFS_FLOAT variable to either "hard" or "softfp". If your target CPU does not have hard floating point support, set the following CLFS_FLOAT vairable to "soft". export CLFS_FLOAT="[hard, softfp, or soft]" If you chose either "hard" or "softfp" for CLFS_FLOAT, you now need to set which floating point hardware is actually included (see table below) with your ARM CPU: export CLFS_FPU="[fpu version]" echo export CLFS_HOST=\""${CLFS_HOST}\"" >> ~/.bashrc echo export CLFS_TARGET=\""${CLFS_TARGET}\"" >> ~/.bashrc echo export CLFS_ARCH=\""${CLFS_ARCH}\"" >> ~/.bashrc echo export CLFS_ENDIAN=\""${CLFS_ENDIAN}\"" >> ~/.bashrc echo export CLFS_ARM_ARCH=\""${CLFS_ARM_ARCH}\"" >> ~/.bashrc echo export CLFS_ARM_MODE=\""${CLFS_ARM_MODE}\"" >> ~/.bashrc echo export CLFS_FLOAT=\""${CLFS_FLOAT}\"" >> ~/.bashrc echo export CLFS_FPU=\""${CLFS_FPU}\"" >> ~/.bashrc Example Processor Type, ABI, and Target Triplets Processor Endianess ABI Target Triplet Generic arm little OABI arm-unknown-linux-uclibc Generic arm, version 4 little OABI armv4-unknown-linux-uclibc Generic arm, version 5 little EABI armv5l-unknown-linux-uclibceabi Generic arm, version 5 big EABI armv5b-unknown-linux-uclibceabi Generic arm little EABI arm-unknown-linux-uclibceabi Generic arm, version 7-a little EABI armv7a-unknown-linux-uclibceabi
ARM Archiecture Choices armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6t2 armv6z armv6zk armv6-m armv7 armv7-a armv7-r armv7-m iwmmxt iwmmxt2 ep9312
ARM Hard Floating Point Versions fpa fpe2 fpe3 maverick vfp vfpv3 vfpv3-fp16 vfpv3-d16 vfpv3-d16-fp16 vfpv3xd vfpv3xd-fp16 neon neon-fp16 vfpv4 vfpv4-d16 fpv4-sp-d16 neon-vfpv4 softvfp none