.. vim: set expandtab fileencoding=utf-8 nomodified wrap textwidth=200 shiftwidth=2 ts=2 foldmethod=marker foldcolumn=4 ruler showcmd lcs=tab\:|- list: .. title: AVR crosscompile .. slug: 2019-02-01-AVR-crosscompile .. date: 2019-02-01 08:35:09 CET .. tags: AVR,gentoo .. category: AVR .. link: .. description: Just random blog for 2019-02-01 .. type: text .. author: Gilhad .. |logo| image:: /images/logo/gilhad.png Crosscompile chain pro AVR na Gentoo (+update) .. TEASER_END * https://wiki.gentoo.org/wiki/Arduino * http://blog.tremily.us/posts/AVR/ Code: .. code-block:: text # USE="-nls -openmp -pch -sanitize -vtv" crossdev -t avr -s4 --without-headers ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * crossdev version: 20151026 * 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: /usr/local/portage-crossdev * PORT_LOGDIR: /var/log/portage * PORTAGE_CONFIGROOT: * Portage flags: _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ * leaving sys-devel/binutils in /usr/local/portage-crossdev * leaving sys-devel/gcc in /usr/local/portage-crossdev * leaving dev-embedded/avr-libc in /usr/local/portage-crossdev * leaving sys-devel/gdb in /usr/local/portage-crossdev * leaving metadata/layout.conf alone in /usr/local/portage-crossdev _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ - _ - ~ * 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 ] # updatedb # locate ldscripts/avr5.x ... /usr/lib64/binutils/avr/2.26.1/ldscripts/avr5.x # ln -s /usr/lib64/binutils/avr/2.26.1/ldscripts /usr/avr/lib/ldscripts simple self test na ověření, že to aspoň nějak funguje: `simple_self_test.sh `_ a jeho `zdroj `_ example build: .. code-block:: bash #!/bin/bash -x # vim: fileencoding=utf-8:nomodified:nowrap:textwidth=0:foldmethod=marker:foldcolumn=4:syntax=sh:filetype=sh:ruler:showcmd:lcs=tab\:|- list #| if [ "$1" == "clean" ] ; then rm *.elf *.asm *.dump *.hdump *.hex *.o #* exit fi avr-gcc -c example.cpp -o example.o avr-gcc -c lib_4DM8010.cpp -o lib_4DM8010.o avr-gcc example.o lib_4DM8010.o -o example.elf avr-objcopy -O ihex -R .eeprom example.elf example.hex avr-gcc -S -c example.cpp -o example.asm avr-objdump -DCfhlSwz example.elf >example.dump avr-objdump -DCfhlSwz -m avr example.hex >example.hdump ------ Update troubleshooting: * Nějak mi přestalo kompilování jít, projevovalo se to následující chybou (ostatně proto vzniknul simple_self_test.sh, viz výše) .. code-block:: text ldscripts/avr5.xn:17: nonconstant expression for length collect2: error: ld returned 1 exit status * Řešení: nakonec jsem zjistil, že mám v systému nejméně dvě verze těch crossutils (avr-\*) nakonec jsem odinstaloval co se dalo, promazal ručně artefakty a znova nainstaloval, teď už to zase jde ------ * Po reinstalaci a spuštění testu nastala tato chyba: .. code-block:: text /usr/libexec/gcc/avr/ld: cannot open linker script file ldscripts/avr5.xn: No such file or directory collect2: error: ld returned 1 exit status * Řešení: .. code-block:: text ln -s /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts /usr/avr/lib/ldscripts