avr-gcc 6.2.0 で qmk_firmware のビルドに失敗したメモ
TL:DR; avr-gcc49
を使えばよい。
背景
Ergodox EZ というキーボードを所有しているのだが、これは qmk_firmware というファームウェアを書き込んで動作カスタマイズできる。 Mac でビルドするには
brew tap osx-cross/avr brew install avr-libc brew install dfu-programmer cd /path/to/qmk_firmware/keyboard/ergodox_ez make KEYMAP=$my_keymap
とする。
ビルドが失敗するようになった
avr-gcc のバージョンを6.2.0に上げたらビルドが失敗するようになった。エラーログは以下:
$ make KEYMAP=uasi -------- begin -------- avr-gcc (GCC) 6.2.0 Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Size before: text data bss dec hex filename 18144 52 191 18387 47d3 ergodox_ez.elf mkdir -p obj_ergodox_ez Compiling C: ergodox_ez.c avr-gcc -c -mmcu=atmega32u4 -gdwarf-2 -DF_CPU=16000000UL -DINTERRUPT_CONTROL_ENDPOINT -DBOOTLOADER_SIZE=512 -DF_USB=16000000UL -DARCH=ARCH_AVR8 -DUSB_DEVICE_ONLY -DUSE_FLASH_DESCRIPTORS -DUSE_STATIC_OPTIO NS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" -DFIXED_CONTROL_ENDPOINT_SIZE=8 -DFIXED_NUM_CONFIGURATIONS=1 -DPROTOCOL_LUFA -DBOOTMAGIC_ENABLE -DMOUSEKEY_ENABLE -DMOUSE_ENABLE - DEXTRAKEY_ENABLE -DNO_PRINT -DNO_DEBUG -DCOMMAND_ENABLE -DNKRO_ENABLE -DSLEEP_LED_ENABLE -DNO_SUSPEND_POWER_DOWN -DVERSION=518562f -Os -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-secti ons -fno-inline-small-functions -fpack-struct -fshort-enums -fno-strict-aliasing -Wall -Wstrict-prototypes -Wa,-adhlns=obj_ergodox_ez/ergodox_ez.lst -I. -I../.. -I../../tmk_core -I../../quantum -I../../qu antum/keymap_extras -I../../quantum/audio -I../../tmk_core/protocol/lufa -I../../tmk_core/protocol/lufa/LUFA-git -I../../tmk_core/common -std=gnu99 -include config.h -MMD -MP -MF .dep/obj_ergodox_ez_ergod ox_ez.o.d ergodox_ez.c -o obj_ergodox_ez/ergodox_ez.o In file included from ../../tmk_core/common/matrix.h:21:0, from ergodox_ez.h:4, from ergodox_ez.c:1: /usr/local/Cellar/avr-gcc/6.2.0/lib/gcc/avr/6.2.0/include/stdint.h:9:26: fatal error: stdint.h: No such file or directory # include_next <stdint.h> ^ compilation terminated. make: *** [obj_ergodox_ez/ergodox_ez.o] Error 1
avr-gcc をダウングレードしたらビルドできるようになった
avr-gcc を4.9にダウングレードしたらビルドできるようになった。ダウングレードの手順は以下:
brew unlink avr-libc avr-gcc brew install avr-libc49 brew link avr-libc49 avr-gcc49