logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

WinAvr dziwny błąd komilacji

Sokolsok 14 Lis 2011 01:00 2629 12
  • #1 10136488
    Sokolsok
    Poziom 11  
    Witam, spotkał się ktoś z następującym błędem podczas kompilacji?

    c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr51\libc.a(fp_powsodd.o): In function `__fp_powsodd':
    (.text.avr-libc.fplib+0x10): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr51\libgcc.a(_mul_sf.o)
    c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr51\libc.a(fp_powsodd.o): In function `__fp_powsodd':
    (.text.avr-libc.fplib+0x20): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr51\libgcc.a(_mul_sf.o)
    make.exe: *** [main.elf] Error 1


    Błąd wywala w przypadku gdy użyję zmiennej w f-cji sin (cos i tan identycznie)..
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Gdzie "a" jest zmienną typu double

    Natomiast w takiej formie działa bez problemu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Spotkał się ktoś w takim błędem?
  • #2 10136791
    Konto nie istnieje
    Konto nie istnieje  
  • #3 10137433
    Sokolsok
    Poziom 11  
    tak, math.h jest dodane
  • #4 10137478
    Konto nie istnieje
    Konto nie istnieje  
  • #5 10137492
    Sokolsok
    Poziom 11  
    Piszę całkowicie sam.. To jest kod, który łącznie ma z 1000 linijek już, wszystko na bieżąco się kompilowało i działało w ATmedze tak jak powinno. Doszedłem do etapu gdzie potrzebuję użyć "sin" i zaczęło mi wywalać właśnie taki błąd, z którym się wcześniej nie spotkałem. Błąd ewidentnie jest w tym miejscu, bo gdy na sztywno wpiszę jako argument sinusa jakąś wartość to się kompiluje i sinus jest obliczony poprawnie, jednak wystarczy wpisać tam jakąś zmienną i właśnie to się dzieje...
    Jeśli chodzi o optymalizację to: "-O2", IDE natomiast nie mam pojęcia co to jest..
  • #6 10137617
    Konto nie istnieje
    Konto nie istnieje  
  • #8 10137682
    Sokolsok
    Poziom 11  
    Właśnie gdzieś w miedzy czasie doczytałem, że trzeba dołączyć libm.a, ale za cholerę nie wiedziałem jak. Problem udało mi się rozwiązać w sumie niechcący.. W Makefile dodałem "LIBS = libm.a" i działa;) Jak chciałem to dodać jak zwykłą bibliotekę to nie pomagało.
    Tak z ciekawości Tronics, do czego libm.a w ogóle jest?
    Dzięki za pomoc
  • Pomocny post
    #9 10137703
    tmf
    VIP Zasłużony dla elektroda
    libm.a implementuje funkcje matematyczne związane z typami zmiennopozycyjnymi. Czyli ciała funkcji zdefiniowanych w math.h.
  • #10 11328846
    mati1988k
    Poziom 13  
    A jak mogę dodać to libm.a w AVR Studio 5 ?
  • #11 11329012
    Konto nie istnieje
    Konto nie istnieje  
  • #12 11329225
    mati1988k
    Poziom 13  
    Może to głupie pytanie ;). Ale wpisuje tylko m tak jak na obrazku czy to tylko przykład i a mam wpisać libm.a ?

    W sumie to kompiluje się i tak i tak więc chyba nie ma różnicy ;).
REKLAMA