eGospodarka.pl
eGospodarka.pl poleca

  • Data: 2018-08-20 17:09:17
    Temat: Makefile
    Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Minęło trochę czasu. odkąd ostatnio pisałem/modyfikowałem na własne
    potrzeby Makefile. W bardzo małych projektach zwykle podawałem po prostu
    nazwy plików, przy większych stosowałem wzór pożyczony z jakiegoś
    internetowego tutorialu. jego główna część wyglądała następująco:

    .PHONY: all clean



    all: $(TARGET).hex





    $(HEXDIR)/%.hex: $(OBJDIR)/%.ihx

    $(S) packihx $^ > $@



    $(OBJDIR)/%.ihx: $(OBJ)

    $(S) $(CC) -o $@ $(LFLAGS) $^



    $(OBJDIR)/%.c.rel: $(SRCDIR)/%.c

    $(S) $(CC) -o $@ $(CFLAGS) -c $^



    $(OBJDIR)/%.asm.rel: $(SRCDIR)/%.asm

    $(S) $(AS) $(AFLAGS) -o $@ $^



    clean:

    $(S) rm -rf $(OBJDIR)/*

    $(S) rm -rf $(TARGET).hex

    Z powodzeniem wykorzystywałem go z 8051 (SDCC) oraz podczas pisania
    mniejszych projektów pod AVR-y, szczególnie gdy na danym komputerze nie
    miałem akurat zainstalowanego Atmel Studio.

    Teraz próbuję go przerobić na potrzeby pewnego projektu dla 6502
    (kompilator CC65). Sam projekt się kompiluje, jeśli wpisać polecenia
    ręcznie albo podam je sekwencyjnie, plik po pliku w Makefile. Próba
    zautomatyzowania go jak powyżej się nie udaje. Wydaje mi się, że wynika
    to z tego, że projekt składa się zarówno z plików *.c jak i
    asemblerowego kodu w plikach *.s.

    Co chcę uzyskać?

    1) w katalogu projektu mam podkatalogi src, inc, obj, lib oraz hex.
    Pierwszy zawiera pliki źródłowe (zarówno *.c, jak i *.s), drugi pliki
    nagłówkowe *.h, do trzeciego trafiają skompilowane ploki obiektowe *.o,
    a w trzecim trzymam przygotowaną wcześniej bibliotekę oraz plik cfg,
    wykorzystywane przez linker.
    2) W pierwszej fazie kompilator cc65 bierze wszystkie pliki *.c i
    generuje na ich podstawie pliki asemblerowe *.s (z tego co wiem CC65 nie
    potrafi od razu wygenerować pliku binarnego z kodu C).
    3) Następnie asembler ca65 na podstawie każdego pliku *.s (zarówno tego
    wygenerowanego przez cc65, jak i znajdującego się tam od początku)
    generuje plik *.o, umieszczając go w folderze obj.
    4) Linker ld64 łączy wszystkie pliki *.o z tego folderu w jeden plik
    binarny.
    5) Na końcu plik binarny jest konwertowany do formatu *.hex, ale to
    akurat najmniejszy problem.

    Ktoś mi powie jak to powinno wyglądać?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: