User:Fabled: Difference between revisions
(Created page with "==Bootstrapping new architectures== # Create cross compiler #* I decided to use crosstool-ng as build cross-compiler is tricky #** Wrote patch to support musl as C-library #*...") |
|||
Line 5: | Line 5: | ||
#** Wrote patch to support musl as C-library | #** Wrote patch to support musl as C-library | ||
#** Wrote patch to enable building toolchains with PIE as default | #** Wrote patch to enable building toolchains with PIE as default | ||
#* | #* Create crosstool-ng .config, [http://dev.alpinelinux.org/~tteras/crosstool-ng-alpine-arm.config My ARM config] | ||
#** NOTE: for some reason binutils gold linker crashes when compiling gcc, so needed to keep it disabled. | #** NOTE: for some reason binutils gold linker crashes when compiling gcc, so needed to keep it disabled. | ||
#* run 'ct-ng build' to build the new tool chain | |||
# Cross compile minimal system image | # Cross compile minimal system image | ||
#* abuild and core APKBUILDs modified to support cross building | #* abuild and core APKBUILDs modified to support cross building | ||
#* Wrote crossbuild-alpine-bootstrap.sh to invoke abuild with cross-compiler | #* Wrote [http://dev.alpinelinux.org/~tteras/crossbuild-alpine-bootstrap.sh crossbuild-alpine-bootstrap.sh] to invoke abuild with cross-compiler | ||
#* Cross-building script uses abuild.conf overlay to define new target | #* Cross-building script uses abuild.conf overlay to define new target [http://dev.alpinelinux.org/~tteras/abuild-cross-armel.conf My ARM overlay] | ||
#* This produces all core .apk files for the target platform that can be used to boot qemu, qemu-user target or native hardware | #* This produces all core .apk files for the target platform that can be used to boot qemu, qemu-user target or native hardware | ||
# Rebuild system and setup builder | # Rebuild system and setup builder |
Revision as of 14:52, 5 July 2013
Bootstrapping new architectures
- Create cross compiler
- I decided to use crosstool-ng as build cross-compiler is tricky
- Wrote patch to support musl as C-library
- Wrote patch to enable building toolchains with PIE as default
- Create crosstool-ng .config, My ARM config
- NOTE: for some reason binutils gold linker crashes when compiling gcc, so needed to keep it disabled.
- run 'ct-ng build' to build the new tool chain
- I decided to use crosstool-ng as build cross-compiler is tricky
- Cross compile minimal system image
- abuild and core APKBUILDs modified to support cross building
- Wrote crossbuild-alpine-bootstrap.sh to invoke abuild with cross-compiler
- Cross-building script uses abuild.conf overlay to define new target My ARM overlay
- This produces all core .apk files for the target platform that can be used to boot qemu, qemu-user target or native hardware
- Rebuild system and setup builder
- Decided to use qemu-user for ARM as it the fastest option available for us (no fast native hardware yet)
- Setup qemu-arm support for target chroot
- apk --arch x86 --root $chroot/qemu --initdb add qemu-arm
- cd $chroot/lib ; ln -s ../qemu/lib/ld-* .
- ldconfig -r $chroot /qemu/lib /qemu/usr/lib
- create binfmt_misc mapping
- seems qemu-user needs to access /proc/sys/vm/mmap_min_addr or it does not work
- Setup target main chroot
- apk --arch arm --root $chroot --initdb add alpine-base build-base
- enter chroot