আমার উত্তরটি এখানে দেখুন: শ্রেণি এবং অবজেক্টস: আসলে আমার কতগুলি এবং কোন ফাইল টাইপগুলি ব্যবহার করা দরকার? - বিশেষত: আইডিই কীভাবে জিনিসগুলিকে সংগঠিত করে ।
আমি জানি যে কমপক্ষে আপনাকে আরডুইনো হেডার ফাইলটি অন্তর্ভুক্ত করতে হবে
হ্যাঁ আপনার এটি করা দরকার।
তবে এর বাইরে, .ino থেকে .cpp ফাইল ব্যবহার করে, উদাহরণস্বরূপ জিসিসি-এভিআর বলুন, সংকলন করলে কি সংকলনের ত্রুটি ঘটবে।
আইডিই আপনার জন্য ফাংশন প্রোটোটাইপগুলি উত্পন্ন করে। .Ino ফাইলে কোডের প্রয়োজন হতে পারে বা নাও লাগতে পারে (লেখক যদি স্বাভাবিক সি ++ উপায়ে কোড করার জন্য যথেষ্ট শৃঙ্খলাবদ্ধ না হন এবং সেগুলি নিজেই না করেন তবে সম্ভবত এটি ঘটবে)।
যদি "স্কেচ" এ অন্য ফাইল রয়েছে (যেমন।।।।।।।।।। সি। বা। সিপিপি ফাইল) তবে উপরের উল্লিখিত আমার উত্তরে বর্ণিত হিসাবে এগুলি সংকলন প্রক্রিয়ায় অন্তর্ভুক্ত করা দরকার।
এছাড়াও স্কেচ দ্বারা ব্যবহৃত যে কোনও লাইব্রেরীতে আপনার লিঙ্ক (সংকলন এবং) করতে হবে।
আপনি বিষয়গুলির লিঙ্কিংয়ের দিক সম্পর্কে জিজ্ঞাসা করেননি, তবে প্রাকৃতিকভাবে সংকলিত হিসাবে বিভিন্ন ফাইলগুলি একত্রে লিঙ্ক করা দরকার এবং তারপরে আপলোডের উদ্দেশ্যে একটি। Bel এবং .hex ফাইলে রূপান্তরিত করা উচিত। নিচে দেখ.
উদাহরণ মেকফিল
আইডিই আউটপুট এর উপর ভিত্তি করে কিছুক্ষণ আগে আমি একটি সাধারণ মেকফিল তৈরি করেছি :
#
# Simple Arduino Makefile
#
# Author: Nick Gammon
# Date: 18th March 2015
# where you installed the Arduino app
ARDUINO_DIR = C:/Documents and Settings/Nick/Desktop/arduino-1.0.6/
# various programs
CC = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-gcc"
CPP = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-g++"
AR = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-ar"
OBJ_COPY = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-objcopy"
MAIN_SKETCH = Blink.cpp
# compile flags for g++ and gcc
# may need to change these
F_CPU = 16000000
MCU = atmega328p
# compile flags
GENERAL_FLAGS = -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=$(MCU) -DF_CPU=$(F_CPU)L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106
CPP_FLAGS = $(GENERAL_FLAGS) -fno-exceptions
CC_FLAGS = $(GENERAL_FLAGS)
# location of include files
INCLUDE_FILES = "-I$(ARDUINO_DIR)hardware/arduino/cores/arduino" "-I$(ARDUINO_DIR)hardware/arduino/variants/standard"
# library sources
LIBRARY_DIR = "$(ARDUINO_DIR)hardware/arduino/cores/arduino/"
build:
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(MAIN_SKETCH) -o $(MAIN_SKETCH).o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/malloc.c -o malloc.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/realloc.c -o realloc.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WInterrupts.c -o WInterrupts.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring.c -o wiring.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_analog.c -o wiring_analog.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_digital.c -o wiring_digital.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_pulse.c -o wiring_pulse.c.o
$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_shift.c -o wiring_shift.c.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)CDC.cpp -o CDC.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)HardwareSerial.cpp -o HardwareSerial.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)HID.cpp -o HID.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)IPAddress.cpp -o IPAddress.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)main.cpp -o main.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)new.cpp -o new.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Print.cpp -o Print.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Stream.cpp -o Stream.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Tone.cpp -o Tone.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)USBCore.cpp -o USBCore.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WMath.cpp -o WMath.cpp.o
$(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WString.cpp -o WString.cpp.o
rm core.a
$(AR) rcs core.a malloc.c.o
$(AR) rcs core.a realloc.c.o
$(AR) rcs core.a WInterrupts.c.o
$(AR) rcs core.a wiring.c.o
$(AR) rcs core.a wiring_analog.c.o
$(AR) rcs core.a wiring_digital.c.o
$(AR) rcs core.a wiring_pulse.c.o
$(AR) rcs core.a wiring_shift.c.o
$(AR) rcs core.a CDC.cpp.o
$(AR) rcs core.a HardwareSerial.cpp.o
$(AR) rcs core.a HID.cpp.o
$(AR) rcs core.a IPAddress.cpp.o
$(AR) rcs core.a main.cpp.o
$(AR) rcs core.a new.cpp.o
$(AR) rcs core.a Print.cpp.o
$(AR) rcs core.a Stream.cpp.o
$(AR) rcs core.a Tone.cpp.o
$(AR) rcs core.a USBCore.cpp.o
$(AR) rcs core.a WMath.cpp.o
$(AR) rcs core.a WString.cpp.o
$(CC) -Os -Wl,--gc-sections -mmcu=$(MCU) -o $(MAIN_SKETCH).elf $(MAIN_SKETCH).o core.a -lm
$(OBJ_COPY) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 $(MAIN_SKETCH).elf $(MAIN_SKETCH).eep
$(OBJ_COPY) -O ihex -R .eeprom $(MAIN_SKETCH).elf $(MAIN_SKETCH).hex
সেই বিশেষ ক্ষেত্রে, .ino ফাইলটি কোনও সমস্যা ছাড়াই সঙ্কলিত করে ব্লিঙ্কসিপি-র নাম পরিবর্তন করে এই লাইনটি যুক্ত করার পরে :
#include <Arduino.h>
gcc
আপনার ডেস্কটপে বিশেষত জিজ্ঞাসা করছেন , বা এভিআর সংকলকটির জন্য জিসিসিavr-gcc
? একটি.ino
এবং একটি.cpp
ফাইলের মধ্যে অনেক বড় পার্থক্য আছে ।