首先:我是linux中的新手。
第二 - 我看过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"
我不希望你做我的作品...只是建议我......或任何有用的网站,他们谈论这些事情......
我希望不要因为我是新人而得到粗鲁的评论。
感谢。
答案 0 :(得分:1)
未定义的引用是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)
的引用。
答案 1 :(得分: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的引用尚未解决。