avr-gcc - optymalizacja

Jan 26, 2005 2 Replies

W projekcie na AVR-a wykorzystuje tylko niektore funkcje z roznych modulow napisanych przeze mnie. Po kompilacji w kodzie wynikowym skompilowane sa wszystkie funkcje wystepujace w modulach, nawet te, ktorych nie wykorzystuje. Jakiej opcji kompilatora uzyc, aby kompilowane byly tylko funkcje uzywane przeze mnie. Przy duzej ilosci funkcji w modulach moze sie okazac, ze zabraknie miejsca w pamieci mikrokontrolera.



Pozdro, Jack


Przed chwila napisalem - linker nie moze wybierac pojedynczych funkcji. Dla niego jednostka jest wynik kompilacji pojedynczego pliku .c, czyli normalnie plik .o (lub .obj). Taki plik albo wchodzi do wyniku caly albo wcale. Biblioteki standardowe napisane sa tak, ze najczesciej plik zawiera jedna funkcje (o ile to mozliwe).

Krzysiek Rudnik

Nie wiem, co rozumiesz pod nazwą "moduły". Aby linker do programu dołączył tylko niezbędne funkcje, musisz je umieścić w oddzielnych plikach źródłowych (.c), z takich plików zrobić bibliotekę (.a) i dopiero jedną lub wiele takich bibliotek łączyć linkerem.

Podanie w wywołaniu linkera (lub makefile) explicite nazw plików obiektowych (.o) zawsze wciągnie je wszystkie. Dopiero podanie nazw plików bibliotek (.a) pozwoli linkerowi na wybranie podzbioru rzeczywiście niezbędnych plików obiektowych z biblioteki.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required