我正在尝试编译pHash扩展。我在这里找到了一个很好的分步解释,https://serverfault.com/questions/491730/compile-phash-on-centos-php-extension
但是我遇到了两个问题:
1)启动pHash源的./configure脚本时,日志显示以下错误,尽管我在/ usr / local / include文件夹中复制了CImg.h
*** Configuring image hash ***
checking CImg.h usability... no
checking CImg.h presence... no
checking for CImg.h... no
checking whether CImg.h is in the current or src directory.... no
这真是个无赖,因为我对pHash DCT图像哈希算法函数最感兴趣
2)启动make时,pHash编译失败并出现以下错误:
../src/.libs/libpHash.so: undefined reference to `pthread_create'
../src/.libs/libpHash.so: undefined reference to `pthread_join'
collect2: ld returned 1 exit status
make[2]: *** [test_texthash] Error 1
make[2]: Leaving directory `/home/downloads/libraries/pHash-0.9.6/examples'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/downloads/libraries/pHash-0.9.6'
make: *** [all] Error 2
知道为什么会这样吗?我确保满足所有依赖关系,如上面的链接所述。 我想尝试使用pHash-0.9.5,但我在phash.org网站上找不到旧版本的档案
答案 0 :(得分:4)
$ sudo apt-get install make libsndfile-dev checkinstall
$ sudo apt-get install cimg-dev libjpeg62 libfftw3-3 imagemagick graphicsmagick
下载libpng
$ tar xvf libpng-1.5.18.tar.gz
$ cd libpng-1.5.18
$ ./configure
$ make check
$ make install
$ sudo apt-get install libsamplerate0-dev libmpg123-dev
$ cd
下载pHash
$ tar xvf pHash-0.9.6.tar.gz
$ cd pHash-0.9.6
$ ./configure --enable-openmp=yes --enable-video-hash=no LIBS='-lpthread'
$ make
$ sudo checkinstall --pkgname=phash --pkgversion="1:$(date +%Y%m%d%H%M)-0.9.6" --backup=no \
--deldoc=yes --fstrans=no --default
$ cd
$ git clone --depth=1 http://github.com/Alexis2004/php-phash
$ cd php-phash
$ pear install CodeGen_PECL
$ ./compile.sh
$ make test
$ make install
这有效...... 你现在要做的就是添加' extension = pHash.so'到你的php.ini文件,你很高兴去!
使用以下代码进行测试
if (extension_loaded("pHash"))
echo "pHash loaded :)";
else
echo "something is wrong :(";
答案 1 :(得分:3)
其实我找出了两个问题
1)Ubuntu有一个CImg软件包,可以用
安装$ sudo apt-get install cimg-dev
2)可以通过在配置脚本中添加LDFLAGS参数来解决pthread错误。
$ ./configure --enable-openmp=yes --enable-video-hash=no --enable-audio-hash=no LDFLAGS='-lpthread'
现在我有一个php扩展编译问题,但这是另一个故事(叹息):php extension compiles with newer API version than my PHP