Как скомпилировать основную библиотеку arduino с помощью makefile?

Я хочу создать библиотечные файлы (.a) основной библиотеки arduino, в конце концов также другие библиотеки (SPI, …), с make-файлом, но я не могу заставить его работать!

Это мой make-файл:

CC=avr-gcc
CPP=avr-g++
MCU=-mmcu=atmega328p
CPU_SPEED=-DF_CPU=16000000UL
CFLAGS=$(MCU) $(CPU_SPEED) -g2 -gstabs -Os -Wall \
-ffunction-sections -fdata-sections -fno-exceptions
INCLUDE=-I./arduinoCORE

CFILES=$(wildcard ./arduinoCORE/*.c)
CPPFILES=$(wildcard ./arduinoCORE/*.cpp)

OBJ=$(CFILES:.c=.o) $(CPPFILES:.cpp=.o)

default: $(OBJ)
avr-ar -r libarduinoUNO.a $^

%.o : %.c
$(CC) $< $(CFLAGS) -c -o $@

%.o : %.cpp
$(CPP) $< $(CFLAGS) -c -o $@

(все заголовочные и исходные файлы находятся в arduinoCORE; даже pins_arduino.h)

После $ make в каталоге выше arduinoCORE я получаю это сообщение об ошибке:

avr-g++ arduinoCORE/CDC.cpp -mmcu=atmega328p -DF_CPU=16000000UL -g2 -gstabs -Os -Wall -ffunction-sections -fdata-sections -fno-exceptions -c -o arduinoCORE/CDC.o
In file included from arduinoCORE/Print.h:27:0,
from arduinoCORE/Stream.h:26,
from arduinoCORE/HardwareSerial.h:28,
from arduinoCORE/Arduino.h:193,
from arduinoCORE/Platform.h:15,
from arduinoCORE/CDC.cpp:19:
arduinoCORE/Printable.h:23:17: fatal error: new.h: No such file or directory
#include <new.h>
^
compilation terminated.

make: *** [arduinoCORE/CDC.o] Error 1

Проблема в том, что new.h на самом деле в arduinoCORE!
Кто-нибудь знает, как с этим справиться?

0

Решение

У меня была другая ошибка с вашим кодом. Arduino.h отображался как отсутствующий. Я исправил это после фактического добавления переменной INCLUDE в CFLAGS и CPPFLAGS (ваша была определена, но не добавлена).

Я также использовал CFLAGS и CPPFLAGS согласно Arduino Технические характеристики. Код является:

CC=avr-gcc
CPP=avr-g++
MCU=-mmcu=atmega328p
CPU_SPEED=-DF_CPU=16000000UL
INCLUDE=-I./

CFLAGS = -c -g -Os -w -ffunction-sections -fdata-sections -MMD $(MCU) $(CPU_SPEED) $(INCLUDE)
CPPFLAGS = -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD $(MCU) $(CPU_SPEED)  $(INCLUDE)

CFILES=$(wildcard ./*.c)
CPPFILES=$(wildcard ./*.cpp)

OBJ=$(CFILES:.c=.o) $(CPPFILES:.cpp=.o)

default: $(OBJ)
avr-ar rcs core.a $^

%.o : %.c
$(CC) $< $(CFLAGS) -c -o $@

%.o : %.cpp
$(CPP) $< $(CPPFLAGS) -c -o $@

Который успешно создает архив (не проверен, только создан).

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector