我正在尝试编译PHP 7.2.3并在/usr/local
支持readline
的情况下安装clean,以便php -a
提供交互式shell会话。
我一直收到错误
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配置。
当这不起作用时,我在/usr/local
中下载并安装了一个新的GNU读取行,默认
readline-6.3$ ./configure
readline-6.3$ make
readline-6.3$ sudo make install
对于PHP,和configure
/ make
相同。
如果不起作用,请尝试更明确地引用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
部分是一个错误的架构的线索,我试图用
./configure CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64"
但所有这些尝试都给出了同样的错误:append_history
(和其他人)是_readline_shell_run
中readline_cli.o
引用的未定义符号
谷歌搜索错误产生了很多点击,但那些有回复的人几乎都是在debian或brew上使用包管理器,例如apt-get
或在mac上使用端口。如何在mac上从源代码编译和安装?如何将我的PHP包链接到已安装的readline标题?
答案 0 :(得分:0)
我有同样的错误,最后通过编辑./configure --xxxxxx
命令后生成的Makefile解决了这个问题
编辑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
,一切都会恢复正常。