Я пытаюсь скомпилировать расширение pHash. Я нашел отличное пошаговое объяснение здесь, https://serverfault.com/questions/491730/compile-phash-on-centos-php-extension
Но я сталкиваюсь с двумя проблемами:
1) При запуске сценария ./configure источников pHash журнал показывает следующую ошибку, хотя я скопировал файл CImg.h в мою папку / usr / local / include
*** 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) Компиляция pHash завершается с ошибкой при запуске make:
../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
$ 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) У Ubuntu есть пакет CImg, который отлично устанавливается с
$ sudo apt-get install cimg-dev
2) ошибку pthread можно устранить, добавив параметр LDFLAGS в скрипт конфигурации.
$ ./configure --enable-openmp=yes --enable-video-hash=no --enable-audio-hash=no LDFLAGS='-lpthread'
Теперь у меня проблема с компиляцией расширения php, но это другая история (вздох): Расширение PHP компилируется с более новой версией API, чем мой PHP