2012-09-27 62 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

相關問題