我正在尝试使用此configure命令从源代码编译phpcompiler。
./configure --prefix=/opt/phc-0.3.0.1/ --with-php=/opt/php-5.3.17/
配置错误是,
checking for exit in -lboost_regex-mt... no
checking for exit in -lboost_regex-mt... (cached) no
checking for exit in -lboost_regex... no
checking for exit in -lboost_regex... (cached) no
checking for exit in -lboost_regex... (cached) no
configure: error: Could not link against boost_regex
完全错误,因为我安装了boost和boost_regex软件包。 libs和头文件。然后我在config.log
文件
configure:17053: g++ -o conftest -g -O2 -L/lib/php5 -L/usr/lib/php5 conftest.cpp /usr/lib/libCrun.so.1 -lphp5 -L/opt/php-5.3.17//lib -R/opt/php-5.3.17//lib -ldl >&5
g++-4.6.real: error: /usr/lib/libCrun.so.1: No such file or directory
g++-4.6.real: error: unrecognized option '-R'
因此,对于此unrecognized option '-R'
错误,许多-lboost_regex
项检查都失败了!
我该如何解决这个问题?有没有我可以编辑的文件来修复它?为什么使用-R
?我认为这将是-L
旗帜。
答案 0 :(得分:2)
由于your comment表示此-R
选项来自configure
,m4/php-embed.m4
中的以下行似乎是最有可能的来源:
LIBS="-lphp5 -L${PHP_INSTALL_PATH}/lib -R${PHP_INSTALL_PATH}/lib $LIBS"
如果您查看configure
,则-R
的所有其他匹配项都会将其写为${wl}-R
,其中${wl}
最有可能扩展为-Wl,
。因此,解决此问题的一种方法是在上一行${wl}
之前添加-R
并运行autogen.sh
以重新创建configure
。
在检查现有文件后,您可以提交a bug。
答案 1 :(得分:0)
您可以在Git 2.23(2019年第二季度)中看到类似的错误(和解决方案),其中-R
已被删除。
指定在运行时查找动态库的路径的方法
已简化。
通过-R/path/to/dir
的旧默认值已被替换为通过-Wl,-rpath,/path/to/dir
的新默认值,这是最近的GCC使用。
请参见commit 0f50c8e的Ævar Arnfjörð Bjarmason (avar
)(2019年5月17日)。
(由Junio C Hamano -- gitster
--在commit 51d6c0f中合并,2019年6月13日)
Makefile
:删除NO_R_TO_GCC_LINKER
标志将我们的默认
CC_LD_DYNPATH
调用更改为GCC喜欢的内容 这些天。
自GCC 4.6发行以来,尚未将未知标志传递给ld(1)。因此,除非设置CC_LD_DYNPATH=-R
,否则我们先前的默认NO_R_TO_GCC_LINKER
会在现代GCC上引起错误。我们对“
-R
”的使用可以追溯到455a7f3(“更多可移植性。”, 2005-09-30,Git v0.99.8a)。
此后不久,bbfc63d(“gcc
不一定通过-R
传递运行时libpath”,2006年12月27日,Git v1.5.0-rc1)中的NO_R_TO_GCC
标志已添加,允许可选使用“-Wl,-rpath=
”。然后在f5b904d中(“ Makefile:允许CC_LD_DYNPATH被覆盖”, 2008-08-16,Git v1.6.1-rc1)可以将此标志覆盖其他功能 完全添加了,因为某些链接器既不使用“
-Wl,-rpath,
”也不使用“-R
”。据我所知,我们应该借助后见之明, 在2006年进行了此更改。
当时或至少从binutils-gdb.git开始,GCC和ld
支持这种类型的调用。 a1ad915dc4(“ [...]添加对-rpath
[...]的支持”,1994-07-20)。进一步的阅读和现有技术可以在以下网址找到:
将普通报告读为“
-R
”似乎是一个错误 在GCC 4.6 released on March 25, 2011中进行了介绍,但我无法 绝对确定这一点,其发行说明不明确 在这个问题上,我不厌其烦地尝试建立和二等分 反对GCC 4.5。