www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

[SOLVED] make in makefile

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.01
Kraj: Ljubljana

PrispevekObjavljeno: Pon Apr 11, 2011 1:01 pm    Naslov sporočila:  [SOLVED] make in makefile Odgovori s citatom

Lep pozdrav!

Me zanima, če kdo razume in obvlada make in pisanje makefilov? Sam sem namreč napisal en makefile, ki iz source datotek, ki se nahajajo v podmapah (src, inc in str) delovne mape naredi program... no vsaj naj bi ga naredil.

Program dela v kolikor iz prerequisitov odstranim %.h a mi potlej ne vključi header datotek. V kolikor v prerequisite dodam %.h mi javi napako, kot da headerja ne najde, čeprav je tam. Makefile izgleda takole:


Koda:
SHELL := /bin/bash
ROOT := $(shell pwd)
INC := $(ROOT)/inc
SRC := $(ROOT)/src
STR := $(ROOT)/str
EXE := exe
AS := arm-none-eabi-as -mcpu=arm926ej-s -c -Wall -I $(INC) -I$(SRC) -I $(STR)
GCC := arm-none-eabi-gcc -mcpu=arm926ej-s -c -Wall -I $(INC) -I$(SRC) -I $(STR)
LDSCRIPT := test.ld
LD := arm-none-eabi-ld -T $(LDSCRIPT)
HEADERS := $(notdir $(wildcard $(INC)/*.h))
SOURCES_GCC := $(notdir $(wildcard $(SRC)/*.c))
SOURCES_AS := $(notdir $(wildcard $(STR)/*.s))
OBJECTS_GCC := $(SOURCES_GCC:.c=.o)
OBJECTS_AS := $(SOURCES_AS:.s=.o)
VPATH := $(STR):$(SRC):$(INC)

all : $(EXE)
   @echo konec postopka: izvrsljiv program po imenu $(EXE) se nahaja v mapi $(ROOT)

$(EXE) : $(OBJECTS_AS) $(OBJECTS_GCC)
   @echo objekti so: $(OBJECTS_AS) $(OBJECTS_GCC)
   @echo headerji so: $(HEADERS)
   @echo linkanje objektov v izvrsljiv program...
   $(LD) -o $@ $^

%.o : %.s %.h
   @echo prevajanje ASSEMBLY izvornih datotek...
   $(AS) -o $@  $<
   
%.o : %.c %.h
   @echo prevajanje C izvornih datotek...
   $(GCC) -o $@ $<
   
.PHONY : clean
clean :
   @echo brisanje objektov
   rm *.o
   @echo brisanje izvrsljivega programa
   rm $(EXE)


Nazadnje urejal/a 71GA Sre Apr 27, 2011 10:05 am; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Benjamin
Član
Član



Pridružen-a: Tor 10 Jul 2007 11:23
Prispevkov: 116
Aktiv.: 0.53
Kraj: Trebnje, Ljubljana

PrispevekObjavljeno: Pon Apr 11, 2011 2:08 pm    Naslov sporočila:   Odgovori s citatom

Živjo!

Kot prvo lahko pogledaš ukaze, ki se izvršijo, ko kličeš 'make'. Verjetno boš lahko že iz tega razbral kaj gre narobe.

Predlogi:
1. Namesto INC := $(ROOT)/inc lahko uporabiš samo INC := ./inc
2. Pri AS in GCC izbriši -I$(SRC) -I $(STR)
3. Pri HEADERS, SOURCES_* dodaj := ./inc/$(notdir)
4. %.o : %.c %.h
Nikjer nimaš definicije, kako naj make naredi %.c ter %.h ?

LP

_________________
Cessna 152: "Flight Level Three Thousand, Seven Hundred"
Controller: "Roger, contact Houston Space Center"
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.01
Kraj: Ljubljana

PrispevekObjavljeno: Sre Apr 27, 2011 10:05 am    Naslov sporočila:   Odgovori s citatom

Hvala, mi je uspelo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group