Nut/Os

Witam! Ostatnimi czasy przesiadujê nad pisaniem aplikacji w systemie Nut/Os na AVR. Jest to system firmy egnite

formatting link
U¿ywam do kompilacji AVR GCC 3.3. Mam wersje 3.2 tego systemu. Mia³em problemy przy kompilacji: ppp.o(.text+0x15e): undefined reference to `NutEventWait' ppp.o(.text+0x372): undefined reference to `NutEventBroadcastAsync' ../../lib/gcc/atmega128\libnutdev.a(uartavr.o): In function `TxComplete': Wyczyta³em na li¶ci dyskusyjnej tego systemu ¿e wa¿na jest kolejno¶æ bibliotek. Moje pytanie jest takie: na czym dok³adnie polega linkowanie bibliotek? Jak na ch³opski rozum wyt³umaczyæ zawarto¶æ pliku Makefile: LIBS = $(LIBDIR)/nutinit.o -lnutdev -lnutnet -lnutpro -lnutnet - lnutfs -lnutos -lnutdev -lnutcrt -lnutos Prosi³bym o proste, choæ mo¿e w miarê jasne wyt³umaczenie co siê dzieje przy kompilacji na etapie linkowania bibliotek. Z góry dziêkujê za pomoc. Pozdrowionka Tomek

Reply to
Tomasz Kuty³a
Loading thread data ...

Cze¶æ

U¿ytkownik "Tomasz Kuty³a" napisa³ w wiadomo¶ci news: snipped-for-privacy@as3-5.krakow.dialup.inetia.pl...

Nut/Os na AVR.

`NutEventBroadcastAsync'

kolejno¶æ

bibliotek? Jak

$(LIBDIR)/nutinit.o -lnutdev -lnutnet -lnutpro -lnutnet -

dzieje przy

AFAIK to mniej wiêcej tak : /nutinit.o mówi, ¿eby dolinkowaæ plik relokowalny jw.

-lnutdev ...itd to lista bibliotek do przeszukania przez linker ( biblioteki w katalogu okre¶lonym przez LIBDIR ) Wg tej listy linker kolejno ( od lewej ) przeszukuje biblioteki ( libnutdev.a libnutnet.a ...itd. ) w poszukiwaniu symboli, do ktorych wcze¶niej wyst±pi³o odwo³anie. Je¶li biblioteki odwo³uj± siê do siebie wzajemnie to wa¿na jest kolejno¶æ ( je¶li np. gdzie¶ w którym¶ module libnutpro.a u¿yta jest jako zewnetrzna funkcja wkompilowana w libnutnet.a - to libnutpro musi byæ przed libnutnet ). Je¶³i odwo³uj± siê do siebie wzajemnie 'na krzy¿' to na li¶cie biblioteka jest ponowiona - do powtórnego przeszukania.

BTW - linker zawsze wkleja kod ca³ego modu³u relokowalnego

*.o - niezale¿nie ile funkcji z niego jest rzeczywi¶cie u¿ytych. Dlatego - jak ³atwo zauwa¿yæ w istniej±cych archiwach *.a

- na ogó³ lokuje siê ka¿d± funkcjê w oddzielnym module.

Przyk³adowo ostatecznie sformatowane wywo³anie linkera dla przyk³adu tcps :

C:\WinAVR\bin\avr-gcc.exe -mmcu=atmega128 -Wl,-Map=Nuttcps.map,--cr ef,-LC:\WinAVR\AvrSide\NutLib,--defsym=main=0 -o Nuttcps.elf nutinit.o tcps.o -lnutdev -lnutpro -lnutnet -lnutfs -lnutos -lnutcrt -lnutdev

-- Pozdrowienia Jurek Szczesiul

Reply to
Jerzy Szczesiul

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.