আমি একটি কাস্টম বিল্ড সিস্টেম (রুবি ব্যবহার করে) দিয়ে একটি ছোট্ট প্রকল্প তৈরি করেছি যা আরডুইনো আইডিই ইনস্টল না করে এটি বেশ সহজ করে তোলে। মূলত, এটি একটি টেমপ্লেট মেকফিল এবং একটি রুবি স্ক্রিপ্ট ব্যবহার করে আরডুইনো লাইব্রেরিগুলি অত্যন্ত সহজ করে তোলে। আপনি এটি https://github.com/Earlz/make-wering এ দেখতে পারেন
তবে আপনার নিজের ঘূর্ণায়মান সম্পর্কিত তথ্যের জন্য আমি পুরানো উত্তরটি এখানে রেখে দিচ্ছি। এটি বেশ জটিল এবং বিরক্তিকর যদিও:
গতিপথ:
- আরডুইনো আইডিই উত্স কোডের একটি অনুলিপি ডাউনলোড করুন
hardware/arduino/cores/arduino
নতুন ডিরেক্টরিতে বিষয়বস্তু অনুলিপি করুন আমি arduino_build হিসাবে উল্লেখ করব
- আরডুইনো-বিল্ডে যে কোনও আরডুইনো
pins_arduino.h
রূপটি আপনার ফাইল থেকে অনুলিপি করুন hardware/arduino/variants
(বোর্ড নিশ্চিত করুন না যদি বোর্ডগুলি পরীক্ষা করুন)
- আরডুইনো_বিল্ডে এই মেকফিলটি যুক্ত করুন:
।
#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)
এবং তারপরে সংকলিত গ্রন্থাগারগুলির ব্যবহার করতে এবং আপনি এই জাতীয় সরল মেকফিল ব্যবহার করতে পারেন:
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/
তবে আপনি যদি সঠিক ক্রমে কিছু না করেন তবে আপনি একটি লিঙ্কার ত্রুটি পাবেন। উদাহরণস্বরূপ, সফটওয়্যারশিরিল ব্যবহার করার জন্য আমাকে এটি করতে হয়েছিল:
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
কমান্ড লাইন গত গ্রন্থাগার হতে হবে
যাইহোক, এটি আমার জন্য এটি সঙ্কলনের একটি সহজ সহজ উপায় ছিল। আর্দুনিওর ভবিষ্যতের সংস্করণগুলি প্রকাশিত হওয়ার সাথে সাথে, এই মেকফিলটি মোটামুটি ভবিষ্যত-প্রমাণ হওয়া উচিত, ওবিজেএস এবং এইচডিআরএসে মাত্র কয়েকটি পরিবর্তন প্রয়োজন। এছাড়াও, এই মেকফিলটি বিএসডি মেক এবং জিএনইউ মেক উভয়ের সাথে কাজ করা উচিত
আরও দেখুন আমার উপর এই উত্তরটি সামান্য পরিমার্জিত সংস্করণ ব্লগ একটি সঙ্গে ইতিমধ্যে কম্পাইল বাইনারি লাইব্রেরী (কম্পাইল "মান" pins_arduino.h ব্যবহার করে) করুন।
** সম্পাদনা করুন **
আমি দেখেছি যে লাইব্রেরি বিল্ডিং মেকফাইল এবং প্রতিটি পৃথক প্রকল্প মেকফিল উভয় ক্ষেত্রে নিম্নলিখিত সংকলক অপ্টিমাইজেশন পতাকা যুক্ত করা চূড়ান্ত সংকলিত বাইনারি আকারকে হ্রাস করে। এটি চূড়ান্ত বাইনারি আকারের আইডিইয়ের সাথে তুলনীয় করে তোলে।
-Wl,--gc-sections -ffunction-sections -fdata-sections
।
সুতরাং, লাইব্রেরি বিল্ড মেকফিলের জন্য:
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