2012-09-27 67 views
0

我试图使用此配置命令从源代码编译phpcompilerg ++ - 4.6.real:错误:无法识别的选项'-R'

./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_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国旗。

+0

在Linux上解决这类问题的一种方法是:运行'strace -o st.log -s 10240 -f -e open,读取./configure'来查看哪些文件被configure和它的子进程打开和读取。您可以搜索'st.log'来查看'-R'是从哪里读取的,并且有一点运气可以编辑相关文件。 – MvG

+0

海湾合作委员会对它无法识别的选项(它过去默默地忽略它们)有了很多挑剔。 '-R'选项可能是为链接器设计的,所以当你发现它时,在它前面加上一个'-Wl'(没有空格)。另外请注意,'-R'连接器选项可能实际上应该是'-rpath'(如果参数是文件或目录,则'-R'的行为不同;如果它是一个目录,则它被视为'-rpath'选项)。 –

+0

@MvG我不想这样跟踪它。它可以通过修改automake文件修复! –

回答

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,。因此,解决此问题的一种方法是在上面的行中添加-R之前的${wl},并运行autogen.sh以重新创建configure

您可能会想要为此提交a bug,在检查现有的。

+0

我在他们的github上提出了一个问题。他们现在转移到github –

+0

感谢您找到根本原因! –

+0

@ shiplu.mokadd.im,也许你可以在这里提供一个链接。我甚至无法在github上找到该项目,也没有关于在项目主页上移动的迹象。显然我没有找到你的问题票。 – MvG

相关问题