我的目標是編譯kiss_fft庫以在JNI中用於android開發。 然而,首先,我試圖從Kiss_fft(Kissfft )使用Kiss_fft.c或Kiss_fftr.c時,就用我的Linux機器上kiss_fft圖書館C.使用本機C Kiss_fft.c來計算android中的fft
來計算DFT。你到底如何將他們的庫編譯成你自己的文件。在我的源代碼C文件的頂部,我#include kiss_fft.h和#include kiss_fftr.h,也可以將kiss_fft的源代碼放在我的項目根目錄或Linux的/ usr/include /中,然後用makefile文件與此類似:
#Makefile
#ARGS = -g -ansi -pedantic -Wall -Werror -O1
ARGS = -g -lsndfile -O1 -lm
FILES = spec_subv4.o kiss_fftr.o kiss_fft.o
spec_sub: $(FILES)
gcc $(ARGS) $(FILES) -o spec_sub
spec_subv4.o: spec_subv4.c
gcc -lsndfile $(ARGS) -c spec_subv4.c -o spec_subv4
kiss_fftr.o: kiss_fftr.c kiss_fftr.h kiss_fftr.h _kiss_fft_guts.h
gcc $(ARGS) -c kiss_fftr.c -o kiss_fftr
kiss_fft.o: kiss_fft.c _kiss_fft_guts.h
gcc $(ARGS) -c kiss_fftr.c -o kiss_fft
通過所有kiss_fft源文件看,我寫了這個make文件來構建所有的依賴。不過,我仍然得到
undefined reference to kiss_fft
undefined reference to kiss_fft_alloc
哪些是kiss_fft庫的內部功能。
任何幫助,將不勝感激。謝謝
嗯,那麼kiss_fft()和kiss_fft_alloc()都在kiss_fft.c中,由kiss_fft.h鏈接。當你說包括庫路徑-L你的意思是這樣的: gcc -L ../path-to-kiss_fft-headers-and-.c-files/ – digiphd 2011-04-21 13:15:20
你能解釋一下-l的用法嗎遠遠沒有編譯和lib文件,'.so'。 – digiphd 2011-04-22 02:13:50