RTV forum PL | NewsGroups PL

Prosty Makefile do kompilacji projektu AVR z main.c, tools.h i tools.c?

[avr-gcc] Makefile

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Prosty Makefile do kompilacji projektu AVR z main.c, tools.h i tools.c?

voice
Guest

Wed Mar 17, 2004 2:54 am   



cześć!

Proszę Was o pomoc bo ja juz odpadam...

Dopiero zacząłem programować AVR'y i nie potrafię skompilować
projektu składającego się z 3 plików: main.c, tools.h i tools.c

main.c:
#v+
#include "tools.h"

int main()
{
int i;
i = foo(i);
return 0;
}
#v-

tools.h
#v+
extern int foo(int i);
#v-

tools.c
#v+
int foo(int i)
{
return i;
}
#v-

Bardzo proszę o jakieś proste makefile do tego :/

Pokazałbym swoje, ale tyle ich już napisałem i mam taki mętlik w
głowie, że sam nie wiem, które miałbym tu cytować.


Pozdrawiam,
voice

--
unsigned int gg = 2627828;

Jacek R. Radzikowski
Guest

Wed Mar 17, 2004 2:54 am   



voice <po.co@komu.dzis> wrote:
Quote:
cześć!

Proszę Was o pomoc bo ja juz odpadam...

Dopiero zacząłem programować AVR'y i nie potrafię skompilować
projektu składającego się z 3 plików: main.c, tools.h i tools.c

[...]
Quote:
Bardzo proszę o jakieś proste makefile do tego :/

Pokazałbym swoje, ale tyle ich już napisałem i mam taki mętlik w
głowie, że sam nie wiem, które miałbym tu cytować.

Nie testowany, ale powinien dzialac z gnu make

----= cut here =---
###
#kompilator
###
#popraw stosownie do swojej konfiguracji
CC=/usr/local/avr-gcc/bin/avr-gcc

#opcje kompilacji
#zmien sciezke i dodaj ewentualne dlasze opcje
CFLAGS= -I/sciezka/do/includow/avr-gcc

###
#linker
###
LD=/usr/local/avr-gcc/bin/avr-gcc

#sciezki do bibliotek+ewewntualne dodatkowe opcje dla linkera
LDFLAGS= -L/sciezka/do/bibliotek/avr-gcc

# ewentualne biblioteki ktore bedziesz chcial dolinkowac.
# np. jesli uzywasz liczb zmiennoprzecinkowych, dodaj -lm
LDLIBS=

###

program: main.o tools.o

main.o: main.c tools.h
tools.o: tools.c tools.h
----= cut here =---

pzdr.
j.

Wojtek Kaniewski
Guest

Wed Mar 17, 2004 7:11 am   



voice wrote:
Quote:
Bardzo proszę o jakieś proste makefile do tego :/

mój może nie jest najprostszy, ale jak dla mnie wygodny. generuje od
razu źródła w asemblerze, żeby mieć możliwość podejrzenia pracy
kompilatora. tworzy pliki .bin i .hex. pozwala szybko zaprogramować
procesor przez `make poke'.

#v+
NAME = program # nazwa plików hex, bin, lst i całej reszty
OBJS = tools.o main.o # tutaj wszystkie pliki .o
MCU = at90s2313 # model procesora
PROG = stk200 # model programatora z uisp

CFLAGS = -Wall -Os -mmcu=$(MCU) -Wstrict-prototypes

default: $(NAME).bin $(NAME).hex

$(NAME).bin: $(NAME)
avr-objcopy -j .text -j .data -O binary $(NAME) $(NAME).bin

$(NAME).hex: $(NAME)
avr-objcopy -j .text -j .data -O ihex $(NAME) $(NAME).hex

$(NAME): $(OBJS)
avr-gcc $(CFLAGS) $(OBJS) -o $(NAME)

%.o: %.c
avr-gcc $(CFLAGS) $< -c -o $@
@avr-gcc $(CFLAGS) $< -S 2> /dev/null

clean:
rm -f $(NAME) *.s *.hex *.bin *.o *.lst *~ core

poke:
uisp -dprog=$(PROG) --erase --upload if=$(NAME).hex --verify
#v-

J.F.
Guest

Wed Mar 17, 2004 8:20 am   



On Wed, 17 Mar 2004 00:11:44 +0100, Wojtek Kaniewski wrote:
Quote:
mój może nie jest najprostszy, ale jak dla mnie wygodny. generuje od
razu źródła w asemblerze, żeby mieć możliwość podejrzenia pracy
kompilatora. tworzy pliki .bin i .hex. pozwala szybko zaprogramować
procesor przez `make poke'.

Ale czy on ci skompiluje ponownie main.c jesli zmienisz tools.h ?
Bo mowiac szczerze to niezbyt widze ..

Quote:
#v+
NAME = program # nazwa plików hex, bin, lst i całej reszty
OBJS = tools.o main.o # tutaj wszystkie pliki .o
MCU = at90s2313 # model procesora
PROG = stk200 # model programatora z uisp

CFLAGS = -Wall -Os -mmcu=$(MCU) -Wstrict-prototypes

default: $(NAME).bin $(NAME).hex

$(NAME).bin: $(NAME)
avr-objcopy -j .text -j .data -O binary $(NAME) $(NAME).bin

$(NAME).hex: $(NAME)
avr-objcopy -j .text -j .data -O ihex $(NAME) $(NAME).hex

$(NAME): $(OBJS)
avr-gcc $(CFLAGS) $(OBJS) -o $(NAME)

%.o: %.c
avr-gcc $(CFLAGS) $< -c -o $@
@avr-gcc $(CFLAGS) $< -S 2> /dev/null

clean:
rm -f $(NAME) *.s *.hex *.bin *.o *.lst *~ core

poke:
uisp -dprog=$(PROG) --erase --upload if=$(NAME).hex --verify
#v-


voice
Guest

Wed Mar 17, 2004 10:24 am   



Quote:
mój może nie jest najprostszy, ale jak dla mnie wygodny. generuje od
razu źródła w asemblerze, żeby mieć możliwość podejrzenia pracy
kompilatora. tworzy pliki .bin i .hex. pozwala szybko zaprogramować
procesor przez `make poke'.
[...]


Super! Dziekuję!
Dziekuję również Jackowi Radzikowskiemu!

Zaczynam powoli robić małe kroki do przodu...

Pozdrawiam,
voice

Andy
Guest

Wed Mar 17, 2004 7:39 pm   



Użytkownik "J.F." <jfox_nospam@poczta.onet.pl> napisał w wiadomości news:u36f50lmhdas5l9cshkl5hb0ua65spo5ib@4ax.com...
Quote:
...
Ale czy on ci skompiluje ponownie main.c jesli zmienisz tools.h ?
Bo mowiac szczerze to niezbyt widze ..
...

na raczej nie skompiluje bo nie ma "dependecies" w stylu:

main.o: main.c tools.h

pozostale zrobic make clean i jeszcze raz make

--
Andrzej

Artur Lipowski
Guest

Thu Mar 18, 2004 3:24 pm   



Andy wrote:
....
Quote:
na raczej nie skompiluje bo nie ma "dependecies" w stylu:

main.o: main.c tools.h
A po co uprawiać taką manufakturę używając make? Toż to zaprzeczenie

idei tego marzędzia.

Podręcznikowe (z manuala make) rozwiązanie to:

%.d: %.c
set -e; $(CC) -MM $(CPPFLAGS) $< \
| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
[ -s $@ ] || rm -f $@

include $(DSOURCES:.c=.d)

Gdzie CPPFLAGS to flagi kompilatora - opcje linowania np.:
CPPFLAGS = -mcpu=arm7tdmi $(DEFINES) $(INCLUDES)

Ww polecenie include powinno się umieścić na końcu Makefile.

Oczywiście to samo dla innych plików z tego typu zależnościami np.
assemblera.

Pozdrawiam,
--
Artur Lipowski

elektroda NewsGroups Forum Index - Elektronika Polska - Prosty Makefile do kompilacji projektu AVR z main.c, tools.h i tools.c?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map