Difference between revisions of "Gentoo: crossdev avr"
Lukas Dzunko (talk | contribs) |
Lukas Dzunko (talk | contribs) |
||
Line 44: | Line 44: | ||
* Log: /var/log/portage/cross-avr-gcc-stage2.log | * Log: /var/log/portage/cross-avr-gcc-stage2.log | ||
* Emerging cross-gcc-stage2 ... [ ok ] | * Emerging cross-gcc-stage2 ... [ ok ] | ||
+ | </pre> | ||
+ | <pre> | ||
+ | # eix -c cross-avr/* | ||
+ | [I] cross-avr/avr-libc [1] (1.8.0[?]@03.08.2012): C library for Atmel AVR microcontrollers | ||
+ | [I] cross-avr/binutils [1] (2.22.90[?]@03.08.2012): Tools necessary to build programs | ||
+ | [I] cross-avr/gcc [1] (4.6.3(4.6)[?]@03.08.2012): The GNU Compiler Collection | ||
+ | [N] cross-avr/gdb [1] ((~)7.4.1): GNU debugger | ||
+ | [1] /opt/local/portage | ||
+ | # | ||
</pre> | </pre> |
Revision as of 22:14, 3 August 2012
Contents
Cross compile ?
Cross compile is name of build process which produce machine code for different architecture. For example i am embed device developer and i am producing machine code for AVR platform on x86_64 workstation. Effectively i am doing cross compile on x86_64 to AVR target. I am writing source code in C language and partly in assembler.
Why sys-devel/crossdev ?
Because it is Gentoo specific tool to manage necessary software to perform cross compile (e.g. binutils, headers, libraries, and compiler). It is very simple to use so i save some of my time during installation of crossdev environment.
Installation of AVR target
sys-devel/crossdev
I recommend latest version of sys-devel/crossdev so first of all put this ebuild to package.keywords. This package don't have USE flags so it is enough to perform:
emerge crossdev
required configuration
crossdev is using own local portage overlay to build target specific configuration. Following line is necessarily in /etc/make.conf. Of course you can use different location :)
PORTDIR_OVERLAY="/opt/local/portage"
If directory dont exist then create it
mkdir -p /opt/local/portage
! crossdev is using new layout of /etc/portage/package.* . If you don't migrated to this layout then you should to it now. New layout is expecting to /etc/portage/package.keywords/ (and all others) to be a directory and configuration is included in files inside of it. For example for AVR target you can find cross-avr there.
build of target specific code
Just invoke:
crossdev -t avr
And you should see following:
* crossdev version: 20120721 * Host Portage ARCH: amd64 * Target Portage ARCH: * * Target System: avr * Stage: 4 (C/C++ compiler) * ABIs: default * binutils: binutils-[latest] * gcc: gcc-[latest] * libc: avr-libc-[latest] * CROSSDEV_OVERLAY: /opt/local/portage * PORT_LOGDIR: /var/log/portage * PORTAGE_CONFIGROOT: * Portage flags: !!! WARNING - Cannot auto-configure CHOST avr !!! You should edit /usr/avr/etc/portage/make.conf !!! by hand to complete your configuration * Log: /var/log/portage/cross-avr-binutils.log * Emerging cross-binutils ... [ ok ] * Log: /var/log/portage/cross-avr-gcc-stage1.log * Emerging cross-gcc-stage1 ... [ ok ] * Log: /var/log/portage/cross-avr-avr-libc.log * Emerging cross-avr-libc ... [ ok ] * Log: /var/log/portage/cross-avr-gcc-stage2.log * Emerging cross-gcc-stage2 ... [ ok ]
# eix -c cross-avr/* [I] cross-avr/avr-libc [1] (1.8.0[?]@03.08.2012): C library for Atmel AVR microcontrollers [I] cross-avr/binutils [1] (2.22.90[?]@03.08.2012): Tools necessary to build programs [I] cross-avr/gcc [1] (4.6.3(4.6)[?]@03.08.2012): The GNU Compiler Collection [N] cross-avr/gdb [1] ((~)7.4.1): GNU debugger [1] /opt/local/portage #