-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.pi.v.chmurka.n
et!not-for-mail
From: q...@t...no1 (Queequeg)
Newsgroups: pl.misc.elektronika
Subject: Re: Makefile
Date: Wed, 22 Aug 2018 10:58:59 +0000 (UTC)
Organization: news.chmurka.net
Message-ID: <2...@t...no1>
References: <5b7ad99d$0$673$65785112@news.neostrada.pl>
NNTP-Posting-Host: pi.v.chmurka.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 22 Aug 2018 10:58:59 +0000 (UTC)
Injection-Info: news.chmurka.net; posting-account="gof";
posting-host="pi.v.chmurka.net:172.24.44.20"; logging-data="27709";
mail-complaints-to="abuse-news.(at).chmurka.net"
User-Agent: tin/2.4.2-20171224 ("Lochhead") (UNIX) (Linux/4.4.50-v7+ (armv7l))
Cancel-Lock: sha1:TD8e0byZx+0NlyIPm86lpTznVBk=
Xref: news-archive.icm.edu.pl pl.misc.elektronika:735509
[ ukryj nagłówki ]Atlantis <m...@w...pl> wrote:
> 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.
Jeśli chcesz dostosować to do istniejącego makefile to może najprościej
będzie ci zrobić wrapper, który wywoła cc65, a potem ca65 i skasuje plik
.s?
> 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ć?
Jeśli upierasz się przy GNU Make, to zrobiłym to tak (nie znam składni
cc65 i innych narzędzi, dostosuj w razie czego, ścieżki też):
NAME = maketest
SRCS = maketest.c maketest2.c
ASMS = $(SRCS:.c=.s)
OBJS = $(ASMS:.s=.o)
.PHONY: all clean
all: $(NAME).hex
%.s:
cc65 -o $@ $<
%.o:
ca65 -o $@ $<
$(ASMS): $(SRCS)
$(OBJS): $(ASMS)
$(NAME).bin: $(OBJS)
ld64 -o $(NAME).bin $(OBJS)
$(NAME).hex: $(NAME).bin
program_do_konwersji_do_hex $(NAME).hex $(NAME).bin
clean:
rm -f $(NAME).hex $(NAME).bin $(OBJS) $(ASMS)
Prosty test pokazuje, że działa (tylko PATH ustawiłem na .:$PATH żeby
wykryło te skrypty udające cc65 itd.):
$ ls -l
razem 16
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 ca65 -> cc65
-rwxr-xr-x 1 queequeg queequeg 9 sie 22 12:56 cc65
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 ld64 -> cc65
-rw-r--r-- 1 queequeg queequeg 404 sie 22 12:56 Makefile
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:45 maketest1.c
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:51 maketest2.c
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 program_do_konwersji_do_hex -> cc65
$ cat cc65
cp $3 $2
$ make
cc65 -o maketest1.s maketest1.c
cc65 -o maketest2.s maketest1.c
ca65 -o maketest1.o maketest1.s
ca65 -o maketest2.o maketest1.s
ld64 -o maketest.bin maketest1.o maketest2.o
program_do_konwersji_do_hex -o maketest.hex maketest.bin
$ ls -l
razem 40
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 ca65 -> cc65
-rwxr-xr-x 1 queequeg queequeg 9 sie 22 12:56 cc65
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 ld64 -> cc65
-rw-r--r-- 1 queequeg queequeg 404 sie 22 12:56 Makefile
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:45 maketest1.c
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:57 maketest1.o
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:57 maketest1.s
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:51 maketest2.c
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:57 maketest2.o
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:57 maketest2.s
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:57 maketest.bin
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:57 maketest.hex
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 program_do_konwersji_do_hex -> cc65
$ make clean
rm -f maketest.hex maketest.bin maketest1.o maketest2.o maketest1.s maketest2.s
$ ls -l
razem 16
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 ca65 -> cc65
-rwxr-xr-x 1 queequeg queequeg 9 sie 22 12:56 cc65
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 ld64 -> cc65
-rw-r--r-- 1 queequeg queequeg 404 sie 22 12:56 Makefile
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:45 maketest1.c
-rw-r--r-- 1 queequeg queequeg 5 sie 22 12:51 maketest2.c
lrwxrwxrwx 1 queequeg queequeg 4 sie 22 12:55 program_do_konwersji_do_hex -> cc65
--
https://www.youtube.com/watch?v=9lSzL1DqQn0
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Lustra w maszynie ASML
- DC blocker i buczące toroidy
- Problemy TSMC cd
- Detektor
- Może tutaj się uda: [NTG] Elewacja / dziurawa Churka
- Falownik jednofazowy a żarówka
- Agregat i "legalność" instalacji
- Uziom
- (Ponownie) odkryto, że ładowanie pulsacyjne robi dobrze
- driver led ?
- Długość wtyku zasilającego ?5.5mm
- Szukam przetwornicy 55-40V>8-8.2V 3-4A
- Kindle - pierwsze wrażenia
- Transformator TS90/16, uzwojenia połączone szeregowo na stałe, z asymetrycznym odczepem, napięcia 16V i 39V a prostowanie pełnookresowe
- regulacja prądu ?
Najnowsze wątki
- 2024-04-28 wymiana przewodu od licznika do mieszkania
- 2024-04-28 Lustra w maszynie ASML
- 2024-04-28 Elektryk przytarł podłogę
- 2024-04-27 Nowy, "szybki "komputer AsRock nie posiada modułu TPM
- 2024-04-27 Nowy, "szybki "komputer AsRock nie posiada modułu TPM
- 2024-04-27 Warszawa => Inżynier DevOps (projekt JP) <=
- 2024-04-27 Warszawa => Senior Account Manager (on-site) <=
- 2024-04-27 Wrocław => Dyrektor Sprzedaży (branża usług/produktów IT) <=
- 2024-04-27 Warszawa => Sales Representative for Outsourcing Services <=
- 2024-04-27 Chrzanów => Administrator i wdrożeniowiec Lotus Notes/Domino <=
- 2024-04-27 Ja pierdolę...
- 2024-04-27 Ryby i kawitacja
- 2024-04-27 Zabrze => Junior HelpDesk <=
- 2024-04-27 Katowice => Administrator IT - Wirtualizacja i Konteneryzacja <=
- 2024-04-27 Bażanowice => Inżynier Industrializacji - Elektronik <=