请帮助我解决 gcc 编译器中的 make 文件错误

Please help me with the make file error in gcc compiler

首先:我是linux的新人。

第2次--我看过What is missing in my makefile? 但仍然没有发现我的 make 文件有什么问题。尽管我遇到了与他相同的错误。 我在 运行 makefile 之后遇到的错误:

    user@ubuntu:~/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" 

而且我不想让你做我的工作...只是建议我任何...或他们谈论这些事情的任何有用的网站...

我希望不要因为我是新人而受到粗鲁的评论。

谢谢。

 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的引用没有解决。

未定义的引用都是在 libm.a 中找到的数学函数。 Makefile 中带有 -lm 的部分没有进入 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) 的引用。