2

我正在尝试使用此配置命令从源代码编译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 软件包。库和头文件。然后我在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标志。

4

2 回答 2

2

由于您的评论表明此-R选项来自configure,因此 in 中的以下行m4/php-embed.m4似乎是最可能的来源:

LIBS="-lphp5 -L${PHP_INSTALL_PATH}/lib -R${PHP_INSTALL_PATH}/lib $LIBS"

如果你看一下configure,所有其他出现的-R都会写成,${wl}-R${wl}有可能扩展到的地方-Wl,。所以解决这个问题的一种方法是在上面的行中添加${wl}before-R并运行autogen.shrecreate configure

在检查现有错误后,您可能希望为此提交错误。

于 2012-09-28T07:47:44.163 回答
0

-R您可以在已删除的 Git 2.23(2019 年第二季度)中看到类似的错误(和解决方案) 。
简化了在运行时指定查找动态库的路径的方式。
旧的默认值 pass-R/path/to/dir已被新的默认值 pass 取代-Wl,-rpath,/path/to/dir,这是最近 GCC 使用的。

请参阅Ævar Arnfjörð Bjarmason ( ) 的提交 0f50c8e(2019 年 5 月 17 日(由Junio C Hamano 合并 -- --提交 51d6c0f中,2019 年 6 月 13 日)avar
gitster

Makefile: 删除NO_R_TO_GCC_LINKER标志

将我们的默认CC_LD_DYNPATH调用更改为 GCC 这些天喜欢的东西。
由于 GCC 4.6 发布未知标志尚未传递给ld(1)。因此,除非设置,否则我们之前的默认设置CC_LD_DYNPATH=-R会在现代 GCC 上导致错误NO_R_TO_GCC_LINKER

我们对“ -R”的使用可以追溯到455a7f3(“更多可移植性”,2005-09-30,Git v0.99.8a)。
不久之后,在bbfc63d(“gcc不一定通过运行时 libpath 与-R”,2006-12-27,Git v1.5.0-rc1)NO_R_TO_GCC中添加了标志,允许可选使用“ -Wl,-rpath=”。

然后在f5b904d ("Makefile: Allow CC_LD_DYNPATH to be override", 2008-08-16, Git v1.6.1-rc1) 中添加了将此标志完全覆盖为其他内容的功能,因为某些链接器既不使用“ -Wl,-rpath,”也不使用“ -R” .

据我所知,我们应该在事后看来,早在 2006 年就做出了这种改变。当时
GCC &ld支持这种类型的调用,或者至少从binutils-gdb.git 开始。a1ad915dc4(“[...]添加对-rpath[...] 的支持”,1994-07-20)。

进一步阅读和现有技术可以在以下位置找到:

阅读那些在2011 年 3 月 25 日发布-R的 GCC 4.6 中引入的报告似乎是一个简单的“ ”错误,但我不能绝对肯定地确认这一点,它的发行说明在这个主题上是模棱两可的,我不能不必费心尝试针对 GCC 4.5 构建和平分它。

于 2019-06-14T22:00:46.657 回答