安装 pHash 库时对“fftw_init_threads”的未定义引用
Posted
技术标签:
【中文标题】安装 pHash 库时对“fftw_init_threads”的未定义引用【英文标题】:Undefined reference to `fftw_init_threads' while installing pHash library 【发布时间】:2020-02-28 10:45:10 【问题描述】:我正在尝试在 ubuntu 上安装 pHash 库,我安装了 libfftw3 和所有必需的库。当我运行 ./configure 命令时一切正常,但是当我尝试运行“make”命令时,总是出现此错误:未定义对 `fftw_init_threads' 的引用。
制作命令:
g551683@sst-p1310007fl:~/Documents/pHash-0.2.9.6$ make
make all-recursive
make[1]: Entering directory '/home/g551683/Documents/pHash-0.2.9.6'
Making all in src
make[2]: Entering directory '/home/g551683/Documents/pHash-0.2.9.6/src'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/g551683/Documents/pHash-0.2.9.6/src'
Making all in bindings
make[2]: Entering directory '/home/g551683/Documents/pHash-0.2.9.6/bindings'
make[3]: Entering directory '/home/g551683/Documents/pHash-0.2.9.6/bindings'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/home/g551683/Documents/pHash-0.2.9.6/bindings'
make[2]: Leaving directory '/home/g551683/Documents/pHash-0.2.9.6/bindings'
Making all in examples
make[2]: Entering directory '/home/g551683/Documents/pHash-0.2.9.6/examples'
/bin/sh ../libtool --tag=CXX --mode=link g++ -O2 -ffast-math -O3 -L/usr/local/lib -lssl -lcrypto -o test_texthash test_texthash.o ../src/libpHash.la -lmpg123 -lsamplerate -lsndfile -lswscale -lavformat -lavutil -lavcodec -lpng -ljpeg -lfftw3
libtool: link: g++ -O2 -ffast-math -O3 -o .libs/test_texthash test_texthash.o -L/usr/local/lib ../src/.libs/libpHash.so -lssl -lcrypto /usr/local/lib/libmpg123.so /usr/lib/x86_64-linux-gnu/libltdl.so -ldl /usr/local/lib/libsamplerate.so -lsndfile -lswscale -lavformat -lavutil -lavcodec /usr/local/lib/libpng16.so -lz /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/local/lib/libfftw3.a -lm
test_texthash.o: In function `_GLOBAL__sub_I_main':
test_texthash.cpp:(.text.startup+0x1b1): undefined reference to `fftw_init_threads'
collect2: error: ld returned 1 exit status
Makefile:323: recipe for target 'test_texthash' failed
make[2]: *** [test_texthash] Error 1
make[2]: Leaving directory '/home/g551683/Documents/pHash-0.2.9.6/examples'
Makefile:419: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/g551683/Documents/pHash-0.2.9.6'
Makefile:298: recipe for target 'all' failed
make: *** [all] Error 2
谁能帮我解决这个错误!
【问题讨论】:
【参考方案1】:来自the documentation:
首先,使用并行复数变换的程序应在 Unix 上与
-lfftw3_threads -lfftw3 -lm
链接,如果您使用 OpenMP 编译,则应与-lfftw3_omp -lfftw3 -lm
链接。您还需要链接到负责系统上线程的任何库(例如 GNU/Linux 上的-lpthread
)或包含启用 OpenMP 的任何编译器标志(例如带有 gcc 的-fopenmp
)。
您没有链接到这个 fftw3_threads
库,也没有链接到 pthread
库。
【讨论】:
以上是关于安装 pHash 库时对“fftw_init_threads”的未定义引用的主要内容,如果未能解决你的问题,请参考以下文章
使用 pHash 搜索一个巨大的图像数据库,最好的方法是啥?