macos — компилировать PHP с поддержкой readline на mac?

Я пытаюсь скомпилировать PHP 7.2.3 и установить чистый в /usr/local с readline поддержка, так что php -a даст сеанс интерактивной оболочки.

Я получаю ошибку

clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
Undefined symbols for architecture x86_64:
"_append_history", referenced from:
_readline_shell_run in readline_cli.o
"_history_list", referenced from:
_zif_readline_list_history in readline.o
"_rl_mark", referenced from:
_zif_readline_info in readline.o
"_rl_pending_input", referenced from:
_zif_readline_info in readline.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libs/libphp7.bundle] Error 1

Кажется, что компиляция PHP не обнаруживает установку readline? Как я могу связать их? Или, по крайней мере, как я могу устранить эту ошибку?

Я начал с

php-7.2.3$ ./configure --without-iconv --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
php-7.2.3$ make

для конфигурации по умолчанию readline.

Когда это не сработало, я скачал и установил свежую readline GNU в /usr/local с дефолтом

readline-6.3$ ./configure
readline-6.3$ make
readline-6.3$ sudo make install

и то же самое configure/make для PHP.

Когда это не сработало, попробуйте более явную ссылку на readline место установки:

php-7.2.3$ ./configure --without-iconv --with-apxs2=/usr/local/apache2/bin/apxs --with-readline==/usr/local/lib --with-pdo-mysql

и затем снова ищите место установки по умолчанию.

По теории, что, возможно, not found for architecture x86_64 часть ошибки была подсказкой, что это была неправильная архитектура, я пытался скомпилировать readline с

./configure CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64"

Но все эти попытки дали одну и ту же ошибку: append_history (и другие) является неопределенным символом, на который ссылаются из _readline_shell_run в readline_cli.o

Попытка погуглить ошибку произвела много обращений, но ответы на них были почти посвящены использованию менеджеров пакетов, таких как apt-get на Debian или Brew или порты на Mac. Как я могу скомпилировать и установить из исходного кода на Mac? Как я могу связать мой пакет PHP с установленными заголовками readline?

1

Решение

У меня та же ошибка, и я наконец-то решил эту проблему, отредактировав Makefile, сгенерированный после ./configure --xxxxxx команда

Отредактируйте Makefile и найдите EXTRA_LIBS, добавьте следующее/usr/local/Cellar/readline/7.0.3_1/lib/libhistory.dylib /usr/local/Cellar/readline/7.0.3_1/lib/

Так что мой EXTRA_LIBS похоже:


EXTRA_LIBS = -lcrypto -lssl -lcrypto -lz -lresolv -lreadline -lncurses -lz -lcrypto -lssl -lcrypto -lm -lxml2 -lz -licucore -lm -lcurl -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm /usr/local/Cellar/readline/7.0.3_1/lib/libhistory.dylib /usr/local/Cellar/readline/7.0.3_1/lib/libreadline.dylib

просто сохрани его и беги make -j8 && make installвсе снова отлично работает.

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector