Arduino IDEをインストールせずにこれをかなり簡単にするカスタムビルドシステム(Rubyを使用)で小さなプロジェクトを作成しました。基本的に、テンプレートのMakefileとRubyスクリプトを使用して、Arduinoライブラリのコンパイルを非常に簡単にします。あなたはhttps://github.com/Earlz/make-wiringでそれを見ることができます
しかし、私はあなた自身のローリングについての情報のためにここに古い答えを残しておきます。しかし、それはかなり面倒で迷惑です:
行き方:
- Arduino IDEソースコードのコピーをダウンロードする
- の内容
hardware/arduino/cores/arduino
を、arduino_buildと呼ぶ新しいディレクトリにコピーします。
pins_arduino.h
Arduinoの亜種のいずれかからファイルhardware/arduino/variants
(不明な場合はboards.txtを確認)をarduino_buildにコピーします
- このメイクファイルをarduino_buildに追加します。
。
#BSD licensed, see http://lastyearswishes.com/static/Makefile for full license
HDRS = Arduino.h binary.h Client.h HardwareSerial.h IPAddress.h new.h pins_arduino.h Platform.h Printable.h Print.h \
Server.h Stream.h Udp.h USBAPI.h USBCore.h USBDesc.h WCharacter.h wiring_private.h WString.h
OBJS = WInterrupts.o wiring_analog.o wiring.o wiring_digital.o wiring_pulse.o wiring_shift.o CDC.o HardwareSerial.o \
HID.o IPAddress.o main.o new.o Print.o Stream.o Tone.o USBCore.o WMath.o WString.o
#may need to adjust -mmcu if you have an older atmega168
#may also need to adjust F_CPU if your clock isn't set to 16Mhz
CFLAGS = -I./ -std=gnu99 -DF_CPU=16000000UL -Os -mmcu=atmega328p
CPPFLAGS = -I./ -DF_CPU=16000000UL -Os -mmcu=atmega328p
CC=avr-gcc
CPP=avr-g++
AR=avr-ar
default: libarduino.a
libarduino.a: ${OBJS}
${AR} crs libarduino.a $(OBJS)
.c.o: ${HDRS}
${CC} ${CFLAGS} -c $*.c
.cpp.o: ${HDRS}
${CPP} ${CPPFLAGS} -c $*.cpp
clean:
rm -f ${OBJS} core a.out errs
install: libarduino.a
mkdir -p ${PREFIX}/lib
mkdir -p ${PREFIX}/include
cp *.h ${PREFIX}/include
cp *.a ${PREFIX}/lib
そして、ただ走る
make
make install PREFIX=/usr/arduino (or whatever)
そして、コンパイルされたライブラリなどを利用するには、次のような単純なmakefileを使用できます。
default:
avr-g++ -L/usr/arduino/lib -I/usr/arduino/include -Wall -DF_CPU=16000000UL -Os -mmcu=atmega328p -o main.elf main.c -larduino
avr-objcopy -O ihex -R .eeprom main.elf out.hex
upload:
avrdude -c arduino -p m328p -b 57600 -P /dev/ttyUSB0 -U flash:w:out.hex
all: default upload
また、ライブラリをコンパイルしようとするlibraries/
と、正しい順序で実行しないと、リンカエラーが発生します。たとえば、SoftwareSerialを使用するには次のようにする必要があります。
avr-g++ -L/usr/arduino/lib -I/usr/arduino/include -Wall -DF_CPU=16000000UL -Os -mmcu=atmega328p -o main.elf main.c -lSoftwareSerial -larduino
-larduino
コマンドラインの最後のライブラリである必要があります
とにかく、これは私にとってそれをコンパイルするためのかなり簡単な方法でした。Ardunioの将来のバージョンが出てくるので、このメイクファイルはかなり将来に対応する必要があり、OBJSとHDRSにいくつかの変更を加えるだけで済みます。また、このmakefileはBSD makeとGNU makeの両方で機能するはずです。
ライブラリのバイナリが既にコンパイルされている(「標準」pins_arduino.hを使用してコンパイルされた)ブログで、この回答のわずかに変更されたバージョンも参照してください。
** 編集 **
次のコンパイラ最適化フラグをライブラリ構築用Makefileと個々のプロジェクトMakefileの両方に追加すると、最終的にコンパイルされるバイナリのサイズが大幅に減少することがわかりました。これにより、最終的なバイナリサイズはIDEのそれに匹敵します。
-Wl,--gc-sections -ffunction-sections -fdata-sections
。
したがって、ライブラリビルドmakefileの場合:
CFLAGS = -I./ -std=gnu99 -DF_CPU=16000000UL -Os -Wl,--gc-sections -ffunction-sections -fdata-sections -mmcu=atmega328p
CPPFLAGS = -I./ -DF_CPU=16000000UL -Os -Wl,--gc-sections -ffunction-sections -fdata-sections -mmcu=atmega328p
そして、プロジェクトのメイクファイルごとに:
avr-g++ -L/usr/arduino/lib -I/usr/arduino/include -Wall -DF_CPU=16000000UL -Os -Wl,--gc-sections -ffunction-sections -fdata-sections -mmcu=atmega328p -o main.elf main.c -larduino
。
参照:http : //arduino.cc/forum/index.php?topic=153186.0