WINAVR - linkowanie bibliotek

May 29, 2004 3 Replies

Witam



Mam taki problem, ze program podzielony jest na kilka plikow i chcialbym, aby przy korzystaniu z funkcji (w pliku glownym) z innych plikow kompilator wlaczal tylko kod tych funkcji z ktorych korzystam, a nie caly plik ze wszystkimi funkcjami... Wydaje mi sie ze bibioteki standartowe tak sa zrobione - podaje sie tylko plik naglowkowy i wlaczany jest tylko ten kod ktory jest uzywany. Probowalem zrobic biblioteke za pomoca libtool w ten sposob :



libtool --mode=link gcc -g -O -o lcd.a lcd.o



powstal plik lcd.a ale niestety chyba nie o to chodzilo.... Czy ktos moglby wyjasnic jak stworzyc taka biblioteke pod WINAVR aby linkowal tylko uzywane funkcje ?



Pozdrawiam ZYGI



Sat, 29 May 2004 15:16:40 +0200, na pl.misc.elektronika, andree napisał(a):

Avr-gcc tak nie umie - jeśli linker musi sięgnąć do pliku *.o nawet po jakiś drobiazg to zawsze dołączy cały plik. Konieczne jest skompilowanie każdej funkcji do oddzielnego pliku *.o i potem zrobienie biblioteki *.a z tego zestawu plików ( tak są skonstruowane systemowe ).

BTW - tylko nie pytaj czemu :-)) darowanemu się nie zagląda.

U¿ytkownik "Jurek Szczesiul" snipped-for-privacy@wycin.ep.com.pl> napisa³ w wiadomo¶ci

Dzieki! Teraz nie bede probowal zrobic czegos czego sie nie da :)

Biblioteka standardowa (libc) jest tak zrobiona, ze prawie kazda funkcja lezy w oddzielnym pliku (.c albo .S) i rzeczywiscie jezeli korzystasz z danej funkcji, tylko plik z nia (i zalezne od niego) dolinkowuja sie do programu. Polecam w podobny sposob robienie swoich bibliotek czyli kazda funkcja w oddzielnym pliku. Jest porzadek, a i do programu linkowane jest tylko to, co niezbedne.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required