Не могу скомпилировать mcrypt (настроить не удалось: mhash_keygen в -lmhash ... no) - PullRequest
3 голосов
/ 17 июня 2011

Проблема, решенная Шоном Чином в ответе 1 .И что меня сводит с ума, так это то, что для компиляции расширения mcrypt достаточно только libmcrypt, нет необходимости компилировать mhash и mcrypt :(


Я хочу скомпилировать расширение mcrypt для php (RHEL5.1, Intel i5 650), вот моя процедура

# libmcrypt
tar zxf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/home/felix021/lamp/libmcrypt/
make
make install

# mhash
tar jxf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure --prefix=/home/felix021/lamp/mhash/
make
make install 

# mcrypt
LD_LIBRARY_PATH=/home/felix021/lamp/libmcrypt/lib:/home/felix021/lamp/mhash/lib
./configure --prefix=/home/felix021/lamp/mcrypt/ \
    --with-libmcrypt-prefix=/home/felix021/lamp/libmcrypt

Конфигурирование не удалось с уведомлением:

checking for mhash_keygen in -lmhash... no
configure: error: "You need at least libmhash 0.8.15 to compile this program. \
http://mhash.sf.net/"

Итак, я скачал mhash0.8.18 и mhash0.8.15, но та же ошибкапроизошло.

Я посмотрел "mhash_keygen" в 0.8.15 / 8:

int mhash_keygen(xxx,xxx,xxx)

И это в 0.9.9.9:

#if defined(PROTOTYPES)
mutils_error mhash_keygen(keygenid algorithm, ....)
#else
mutils_error mhash_keygen();
#endif
//typedef uint32 mutils_error

Но, mcrypt-2.6.8 / configure +12114, это:

char mhash_keygen ();

Я изменил "char" на "mutils_error" в конфигурации, ошибка все еще появляется.

Что я могу сделать больше ....?

Спасибо, что прочитали мой вопрос.

1 Ответ

5 голосов
/ 17 июня 2011

Я пересмотрел ваши шаги на коробке RHEL5 и получил ту же ошибку.

С config.log похоже, что libmhash не может быть найден.

configure:12093: checking for mhash_keygen in -lmhash
configure:12128: gcc -o conftest -g -O2   conftest.c -lmhash   >&5
/usr/bin/ld: cannot find -lmhash
collect2: ld returned 1 exit status

Должен быть более чистый способ сделать это, но мне удалось настроить и скомпилировать mcrypt , предоставив каталоги lib и include для mhash через дополнительные CFLAGS и LDFLAGS.

# mcrypt
export LD_LIBRARY_PATH=/home/felix021/lamp/libmcrypt/lib:/home/felix021/lamp/mhash/lib
export LDFLAGS="-L/home/felix021/lamp/mhash/lib/ -I/home/felix021/lamp/mhash/include/"
export CFLAGS="-I/home/felix021/lamp/mhash/include/"
./configure --prefix=/home/felix021/lamp/mcrypt/ \
    --with-libmcrypt-prefix=/home/felix021/lamp/libmcrypt
...