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

gcc - Problem z linkowaniem pliku (undefined reference to `sin')

eros81 15 Wrz 2012 10:55 1935 6
REKLAMA
  • #1 11312841
    eros81
    Poziom 14  
    Posty: 175
    Pomógł: 1
    Ocena: 5
    Witam
    Kompilator:
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
    

    Kompiluje:
    tomek@tomek-Ubuntu:~/GPS/testnmea$ make
    gcc -I nmea -c -g  -lm main.c -o main.o
    gcc -I nmea -c -g  -lm context.c -o context.o
    gcc -I nmea -c -g  -lm conversions.c -o conversions.o
    gcc -I nmea -c -g  -lm generate.c -o generate.o
    gcc -I nmea -c -g  -lm generator.c -o generator.o
    gcc -I nmea -c -g  -lm gmath.c -o gmath.o
    .
    .
    .
    gcc  -I nmea -g  -lm main.o context.o conversions.o generate.o generator.o gmath.o info.o parse.o parser.o sentence.o tok.o -o main
    

    i tu się wywala:
    home/tomek/GPS/testnmea/gmath.c:98: undefined reference to `sqrt'
    gmath.o: In function `nmea_distance':
    /home/tomek/GPS/testnmea/gmath.c:131: undefined reference to `sin'
    /home/tomek/GPS/testnmea/gmath.c:131: undefined reference to `sin'
    

    Nie wiem gdzie leży problem, ponieważ mam opcje -lm więc powinno dobrze zlinkować.
  • REKLAMA
  • #2 11313019
    McMonster
    Poziom 32  
    Posty: 1942
    Pomógł: 182
    Ocena: 57
    To jeszcze kod pokaż. Zainkludowałeś na pewno odpowiednie nagłówki?
  • REKLAMA
  • #3 11313038
    eros81
    Poziom 14  
    Posty: 175
    Pomógł: 1
    Ocena: 5
    McMonster napisał:
    To jeszcze kod pokaż. Zainkludowałeś na pewno odpowiednie nagłówki?

    Wklejam fragmenty
    Jeśli trzeeba będzie to resztę też wkleję.
    gmath.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    gmath.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Cytat:
    CC=gcc
    CFLAGS=-g -lm
    OBJS=main.o context.o conversions.o generate.o generator.o gmath.o info.o parse.o parser.o sentence.o tok.o

    INCLUDES = -I nmea


    main: $(OBJS)
    $(CC) $(LFLAGS) $(INCLUDES) $(CFLAGS) $^ -o $@

    $(OBJS): %.o: %.c
    $(CC) $(INCLUDES) -c $(CFLAGS) $< -o $@


    clean:
    rm -f *.o
  • #4 11313267
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Pokaż funkcję nmea_distance, linker przecież wyraźnie mówi, że tam jest problem.
  • REKLAMA
  • #5 11313291
    eros81
    Poziom 14  
    Posty: 175
    Pomógł: 1
    Ocena: 5
    gaskoin napisał:
    Pokaż funkcję nmea_distance, linker przecież wyraźnie mówi, że tam jest problem.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Problem występuje w wszystkich funkcjach matematycznych w tym pliku.
  • REKLAMA

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik zgłosił problem z linkowaniem pliku w GCC, otrzymując błąd "undefined reference to `sin`". Po przedstawieniu fragmentów kodu, w tym funkcji obliczających odległość między punktami, zidentyfikowano, że problem dotyczy wszystkich funkcji matematycznych w pliku. Ostatecznie rozwiązaniem okazało się dodanie opcji "-lm" do polecenia kompilacji, co pozwoliło na pomyślne skompilowanie kodu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA