macos — Как я могу установить libmemcached для Mac OS X Yosemite 10.10, чтобы установить PHP-расширение memcached.so на Mamp 3?

Мне нужно установить libmemcached на мой MacBook Pro с Mac OS X Yosemite.

Я уже установил демон memcached, но для работы расширения PECL PHP memcached.so мне нужно установить libmemcached.

Я скачал tar.gz с https://launchpad.net/libmemcached/+download, посмотрел файл README.FIRST:

Hi!

If you are getting this code from http://launchpad.net/libmemcached then
continue reading. Otherwise these directions are not for you (well maybe...).

To obtain code from http://bazaar.launchpad.net/libmemcached you will need to
issue the following command:

bzr branch lp:libmemcached

Once the tree is cloned you will need to build the "configure" script. You
can do this by running the script:

./bootstrap.sh autoreconf

It will set up all of the files you need to build libmemcached. At that
point it is just the typical "./configure; make; make test; make install"
For a tarball release do a "make dist" and for an RPM type "make rpm".

For patches, we prefer you push a branch to launchpad and then submit that
branch to be merged. For more information, see:

https://help.launchpad.net/Code/UploadingABranch
https://help.launchpad.net/Code/Review

Thanks and keep hacking!

Cheers,
-Brian
Seattle, WA.

Поэтому я установил Bazaar и набрал следующую команду:

bzr branch lp:libmemcached

Но то, что я получаю, это:

    bzr: warning: unsupported locale setting
bzr could not set the application locale.
Although this should be no problem for bzr itself, it might
cause problems with some plugins. To investigate the issue,
look at the output of the locale(1p) tool.
Not checking SSL certificate for xmlrpc.launchpad.net.
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data.  See "bzr help launchpad-login".
bzr: ERROR: Target directory "libmemcached" already exists.

И если я попытаюсь бежать ./ Configure а потом делать, Я получаю много предупреждений, таких как:

./libmemcached/server.hpp:82:62: warning: implicit conversion loses integer precision: 'uint64_t'
(aka 'unsigned long long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]

libmemcached/csl/scanner.cc:2070:2: warning: 'register' storage class specifier is deprecated
[-Wdeprecated-register]

libmemcached/byteorder.cc:75:10: error: use of undeclared identifier 'htonll'

И 2 ошибки:

2 errors generated.
make[1]: *** [libmemcached/libmemcached_libmemcached_la-byteorder.lo] Error 1
make: *** [all] Error 2

Так что на самом деле я не могу установить libmemcached. Есть ли какой-либо вариант, который я могу попробовать, как я могу решить эту проблему? Почему все эти ошибки?

Спасибо за внимание!

Надеюсь на помощь.

4

Решение

Мне удалось получить libmemcached для компиляции и установки на OSX 10.10.3, изменив скрипт configure и один из исходных файлов.

В configure Я изменил строки:

if ac_fn_cxx_try_compile "$LINENO"; then :
ac_cv_have_htonll=yes
else
ac_cv_have_htonll=no
fi

чтобы:

ac_cv_have_htonll=no

Затем в clients/memflush.cc Я изменил 2 экземпляра:

if (opt_servers == false)

чтобы:

if (opt_servers == NULL)

После этого обычный configure, make, sudo make install работал нормально (хотя и с большим количеством предупреждений). Библиотека, кажется, работает нормально, с pylibmc в моем случае.

8

Другие решения

Я знаю, что вопрос задавался давным-давно, но проблема, на мой взгляд, в другом месте, а именно в пропущенном включении.

Вот как я исправил эту проблему (macOS High Sierra 10.13):

В bytesorder.cc я добавил эти 3 строки после byteorder.h:

#if defined HAVE_HTONLL && defined HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
3

По вопросам рекламы [email protected]