2015-01-27 2 views
1

Прежде всего: я новичок в Linux.Пожалуйста, помогите мне с ошибкой файла make в gcc-компиляторе

2nd - Я видел What is missing in my makefile? , но все еще не понял, что не так с моим файлом make. Хотя я получаю те же ошибки, что и он. ошибка, что я получаю после запуска Makefile:

[email protected]:~/Documents/Myfiles/Adaptive Doppler$ make adaptiveav 
    gcc -o adaptiveav simpsimaav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o -g 
    simpsimaav.o: In function `main': 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:179: undefined reference to `cos' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:180: undefined reference to `sin' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:299: undefined reference to `sin' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:299: undefined reference to `sin' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:299: undefined reference to `sin' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:325: undefined reference to `sqrt' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:325: undefined reference to `sqrt' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:326: undefined reference to `cos' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:327: undefined reference to `sin' 
    simpsimaav.o: In function `rayleigh': 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:418: undefined reference to `log' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:418: undefined reference to `sqrt' 
    /home/user/Documents/Myfiles/Adaptive Doppler/simpsimaav.c:421: undefined reference to `sqrt' 
    four1.o: In function `four1': 
    /home/user/Documents/Myfiles/Adaptive Doppler/four1.c:47: undefined reference to `sin' 
    /home/user/Documents/Myfiles/Adaptive Doppler/four1.c:49: undefined reference to `sin' 
    collect2: error: ld returned 1 exit status 
    make: *** [adaptiveav] Error 1 

------------------------------------------------------------- 

Мой макияж файл:

OBJS= main.o do_fft.o find_m.o read_sig.o write_out.o allocin.o\ 
    getopts.o read_form.o read_bin.o optlist.o usage.o normalize.o \ 
    enquire.o init_fft.o subdc.o skip.o shortfile.o open_out.o \ 
    han_win.o getyn.o record.o do_mom.o frq_arry.o four1.o look_nfo.o\ 
    do_peak.o coefs_out.o do_smooth.o do_maxf.o accum.o pspect.o except.o\ 
    get_info.o open_in.o test_read.o getstr.o getint.o open_nfo.o line_flush.o \ 
    simpsim1.o 


    # Note: these routines are found in Lib/lib.ar 
    LIBOBJS= debug.c div_by.c getint.c getstr.c \ 
    init_ap.c look_nfo.c open_in.c open_nfo.c test_read.c 

    # LIBS= -lm /usr/local/src/Cspect/Lib/lib.ar -lfpe 
    LIBS = -lm 

    CFLAGS= -g 
    rtest: rtest.o realft.o four1.o 
     gcc -o rtest rtest.o realft.o four1.o -lm $(CFLAGS) 
    itest: itest.o realft.o four1.o 
     gcc -o itest itest.o realft.o four1.o -lm $(CFLAGS) 
    test: test.o four1.o 
     gcc -o test test.o four1.o -lm $(CFLAGS) 
    invtest: invtest.o four1.o 
     gcc -o invtest invtest.o four1.o -lm $(CFLAGS) 
    tabtest: test.o ffttab.o 
     gcc -o test test.o ffttab.o -lm $(CFLAGS) 

    cspect: ${OBJS} 
     gcc -o cspect.exe ${OBJS} ${LIBS} ${CFLAGS} 

    rdtest: rdtest.o read_form.o 
     gcc -o rdtest rdtest.o read_form.o -g 

    fttest: sine.o do_fft.o four1.o subdc.o do_peak.o 
     gcc -o fttest sine.o do_fft.o four1.o subdc.o do_peak.o 

    adaptive: simpsima.o findvel.o do_fft.o four1.o subdc.o do_peak.o 
     gcc -o adaptive simpsima.o findvel.o do_fft.o four1.o subdc.o do_peak.o -g 

    notadaptive: simpsimna.o findvel.o do_fft.o four1.o subdc.o do_peak.o 
     gcc -o notadaptive simpsimna.o findvel.o do_fft.o four1.o subdc.o do_peak.o -g 

    adaptivevold: simpsimavold.o findvel.o do_fft.o four1.o subdc.o do_peak.o 
     gcc -o adaptivevold simpsimavold.o findvel.o do_fft.o four1.o subdc.o do_peak.o 

    adaptivev: simpsimav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o 
     gcc -o adaptivev simpsimav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o -g 


    notadaptivev: simpsimnav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o 
     gcc -o notadaptivev simpsimnav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o -g 


    adaptiveav: simpsimaav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o 
     gcc -o adaptiveav simpsimaav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o -g 


    .c.o: 
     gcc -c ${CFLAGS} $*.c 

    #simpsim.o: simpsim.c 
    # gcc -c simpsim1.c 

    : spect 
    strip spect 
    chmod 755 spect 
    chgrp user spect 
    mv spect /usr/local/bin 

Это не каталог, где мой lib.ar: является ли это, вероятно, для этого?

# LIBS= -lm /usr/local/src/Cspect/Lib/lib.ar -lfpe 
LIBS = -lm" 

и я не хочу, чтобы ты мои работы ... просто предложить мне что-нибудь ... или какой-либо полезный сайт, где они говорят об этих вещах ...

Я надеюсь, чтобы не получить грубые комментарии просто потому, что я новичок.

Спасибо.

ответ

1

Неопределенные ссылки - все математические функции, найденные в libm.a. Часть с -lm в Makefile не попала в команду gcc. Попробуйте добавить -lm в команду gcc, и она должна работать. В частности, это

adaptiveav: simpsimaav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o 
     gcc -o adaptiveav simpsimaav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o -g 

отсутствует ссылка на $(LIBS) в конце.

+0

Спасибо ... это сработало! –

0
adaptiveav: simpsimaav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o 
     gcc -o adaptiveav simpsimaav.o findvel.o do_fft.o four1.o subdc.o do_peak_n.o -g 

Как вы можете видеть, переключатель -lm не находится на этой линии. Поэтому ссылки на cos неразрешены.

Смежные вопросы