Skocz do zawartości

Błąd podczas kompilacji kodu [ATmega8;C]


joachim726

Pomocna odpowiedź

Witam wszystkich!

To mój pierwszy post na tym forum, więc proszę o wyrozumiałość za ewentualne błędy (w szczególności, jeśli to zły dział). Chcąc zacząć naukę programowania mikro kontrolerów w C (wybrałem ATmega8), zakupiłem zestaw uruchomieniowy ZL2AVR, z programatorem i samym mikro kontrolerem. Ponieważ używam systemu operacyjnego Linux Slackware 13.37, rozpocząłem kompletowanie potrzebnych narzędzi, pod ten właśnie system. Binutils skompilowałem, ze źródeł, podając parametry, podane w tutorialu znalezionym w internecie. Avr-gcc i avr-libc, zainstalowałem z pakietów. Kiedy postanowiłem, sprawdzić czy wszystko działa i skompilowałem ten kod #define F_CPU 1000000L

#include

#include

main()

{

} [\code] , dostałem komunikat błędu: as: unrecognized option '-mmcu=atmega8' [\code] - . Proszę, o pomoc w rozwiązaniu tego problemu (co jest źle), ponieważ, samemu nie jestem w stanie tego zrobić. Jeśli potrzebne są jakieś logi, czy coś w tym stylu - wstawię.

Ps. kompilowałem poleceniem:

 avr-gcc -mmcu=atmega8 -Os -g \
a.out a.c [\code]
Link do komentarza
Share on other sites

To przykład z AVR Studio:

avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Proba_10.o -MF dep/Proba_10.o.d -c ../Proba_10.c
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Proponuję naprawdę zapoznać się z dokumentacją do avr-gcc, tam są te wszystkie argumenty opisane. Ma być -mmcu.

Ma pewno musi być fumkcja main() poprzedzona jakimś przedrostkiem określającym co ma zwracać(bądź nic). W porzypadku funkcji main() ma tam być int. Czyli program powinien wyglądać tak:

#define F_CPU 1000000L 
#include <avr/io.h> 
#include <util/delay.h> 
int main() 
{ 
}
Link do komentarza
Share on other sites

Poniewaz, musialem re-instalowac moj system (nadal mam Linux'a Slackware 13.37), musialem instalowac wszystko od nowa, tzn. skompilowalem ze zrodel wg. tego poradnika: lhttp://www.nongnu.org/avr-libc/user-manual/install_tools.html .

Kiedy sprobowalem skompilowac ten kod:

#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
}

, poleceniem avr-gcc -mmcu-atmega8 a.c -o a, assemblerowi nie przezkadzala juz opcja "-mmcu", jednak wystapil problem z bilioteka, na wyjscie bledu zostal zwrocony komunikat:

a.c:2:20: fatal error: avr/io.h: No such file or directory
compilation terminated.

. Kiedy zakomentowalem polecenie zalaczajoce ten plik, zostal zwrocony alanoigczny komunikat nt. drogiego polecenia. Po usunieciu obu polecen include, kompilator zwraca ten blad:

/lib/gcc/avr/4.6.1/../../../../avr/bin/ld: cannot find crtm8.o: No such file or directory
/lib/gcc/avr/4.6.1/../../../../avr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status

. Rozumiem, ze popelnilem blad podczas instalacji biblioteki. Bardzo prosze o pomoc.

Ps.Przepraszam, za brak pl. znakow, spowodowane jest to tym, ze system jest swiezo po re-instalacji.

Pps.Jesli pomocne w rozwiozaniu mojego problemu, beda logi systemowe, prosze podac jaki plik jest potrzebny, wkleje.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.