読者です 読者をやめる 読者になる 読者になる

ヤルキデナイズド

Unclassified Articles on Software and IT

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