[AVR-GCC] Kompilacja "2drozna"

May 24, 2007 7 Replies

Witam, mam 2 identyczne uklady roznica jest niewielka. w jednym jest zegar DS1305 w drugim DS1307. Jest mozliwosc zeby kompilator tworzyl binaria za jednym zamachem dla obu ukladow? Jak to uwarunkowac ???


U¿ytkownik "Pawel K" snipped-for-privacy@kpw.qs.pl> napisa³ w wiadomo¶ci news:f34002$lbk$ snipped-for-privacy@inews.gazeta.pl...

Kompilacja warunkowa?

Pzdr, Maciek

Maciej Wywrocki pisze:

no tak, jednak albo 1szy wariant albo 2gi. Mi chodzi o obydwa warianty za jednym zamachem :)

Pawel K pisze:

Edycja pliku Makefile, ale wydaje mi się, że prościej jednak utworzyć 2 projekty. Albo inaczej - napisać skrypt, który najpierw utworzy pierwszą, a następnie drugą binarkę.

A sk±d kompilator ma wiedzieæ, z którym uk³adem bedzie program wspó³pracowa³? Masz dwie mo¿liwo¶ci: Dwa kody wynikowe - ka¿dy inny. Mog± byæ utworzone warunkami podczas kompilacji. W zale¿no¶ci od uk³±du wspó³pracuj±cego programujesz jedn± lub drug± wersj±.

Druga mo¿liwo¶æ to jeden kod wynikowy, a program sam sprawdza jaki jest to uk³ad (na podstawie ich w³a¶ciwo¶ci lub dodatkowych zworek) i wybiera odpowiednie procedury obs³ugi. Ja bym wybra³ do urz±dzenia maj±cego byæ produkowanego z takimi lub takimi uk³adami w³a¶nie takie rozwiazanie (chyba, ¿e nie chcia³oby siê zmiesciæ w pamiêci).

odpowiednio grzebi±c w makefile ;-)

Pawel K pisze:

No to w makefile wstawiasz do opcji kompilatora np. -DMAM_DS1305 a za drugim razem -DMAM_DS1307 i sprawdzasz tą definicję #ifdef'em tak jak inne kompilacje warunkowe. Warto zrobić oddzielne sprawdzenia każdej definicji zamiast klauzuli #else aby wykryć ew. niezdefiniowanie typu układu w pliku makefile.

Możesz tak napisać makefile, aby wszystkie pliki były wspólne, a tylko kod do obsługi DS1305 wzięty z pliku ds.c wpadł do ds1305.o natomiast to samo skompilowane dla DS1307 wpadło do pliku ds1307.o. Potem w spisie plików linkowanych umieszczasz ds1305.o a innym razem 1307.o i po kłopocie. Trzeba tylko powielić wywołanie linkera np. przy generacji "all:" aby zrobiły się dwa pliki wynikowe.

Adam Dybkowski pisze:

dzieki wielkie .... jak zawsze niezawodny ...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required