kissfft 라이브러리를 컴파일하고 링크하는 것과 관련하여 newb 문제가 있습니다. kissfft 라이브러리를 다운로드하여 테스트 디렉토리에 압축을 풉니 다. 디렉토리를 입력하고 'test testall'을 실행하면 다음 오류가 발생합니다. std c 수학 라이브러리가 제대로 링크되지 않은 것처럼 보입니다.KISSFFT 컴파일 및 링크
[email protected]:~/KISSFFT/kiss_fft129$ make testall
# The simd and int32_t types may or may not work on your machine
make -C test DATATYPE=simd CFLAGADD="" test
make[1]: Entering directory `/home/sharkllama/KISSFFT/kiss_fft129/test'
cd ../tools && make all
make[2]: Entering directory `/home/sharkllama/KISSFFT/kiss_fft129/tools'
cc -o fft_simd -Wall -O3 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast -Wwrite-strings -I.. -DUSE_SIMD=1 -msse -lm ../kiss_fft.c fftutil.c kiss_fftnd.c kiss_fftr.c kiss_fftndr.c
/tmp/ccFbS0yK.o: In function `kiss_fft_alloc':
kiss_fft.c:(.text+0xd17): undefined reference to `sincos'
kiss_fft.c:(.text+0xd6b): undefined reference to `floor'
kiss_fft.c:(.text+0xe07): undefined reference to `sincos'
kiss_fft.c:(.text+0xeba): undefined reference to `sqrt'
/tmp/ccbYqDcf.o: In function `kiss_fftr_alloc':
kiss_fftr.c:(.text+0x118): undefined reference to `sincos'
kiss_fftr.c:(.text+0x188): undefined reference to `sincos'
collect2: ld returned 1 exit status
make[2]: *** [fft_simd] Error 1
make[2]: Leaving directory `/home/sharkllama/KISSFFT/kiss_fft129/tools'
make[1]: *** [tools] Error 2
make[1]: Leaving directory `/home/sharkllama/KISSFFT/kiss_fft129/test'
make: *** [testall] Error 2
[email protected]:~/KISSFFT/kiss_fft129$
명백히 메이크 파일은 -lm 옵션이 포함되어 있으므로 수학 라이브러리에 연결하려고합니다. 이것에 대해 이해할 수는 없습니다. 이전에 수학 라이브러리에 제대로 링크 된 수많은 프로그램을 컴파일했습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다. -B
이해하지만, 오버랩을 구현하고 KISSFFT 라이브러리 (다른 일치하는 필터/상관 관계 기반 루틴과 함께)를 사용하여 오버랩 및 회선 루틴을 추가 할 것입니다. 나는 표준 configure && make && make install을하려고하지는 않았지만, 기본 makefile이 예제 코드를 상자 밖으로 만들 것을 기대하고 있었다. 라이브러리 주위에 내 코드를 래핑 한 다음 추가 기능을 추가 할 것이므로 필자는 자체 메이크 파일을 작성했습니다. 문제 해결됨. – user1352331
또한 README에 테스트 루틴에 필요한 '추가 종속성'이 명시되어 있으면 좋을 것입니다. 이것이 문제의 원인이라고 생각하지 않지만, 어떤 경우 에든 알아두면 좋을 것입니다. – user1352331