linkerフラグに-Wl,-u,vfprintf -lprintf_flt -lmを渡してやる.
Arduino IDEからフラグの指定方法が分からなかったので
Arduino-makefileのArduino.mkの860行目のLDFLAGSに追加した.
LDFLAGS += -$(MCU_FLAG_NAME)=$(MCU) -Wl,-u,vfprintf ---gc-sections -O $(OPTIMIZATION_LEVEL) $(EXTRA_FLAGS) $(EXTRA_CXXFLAGS) $(EXTRA_LDFLAGS) -lprintf_flt -lm
この状態でビルドすると実行ファイルのサイズが大きくなるので
デフォルトではこのオプションは切っておいたほうが良さそう.