2011-10-22 30 views
3

我試圖運行的BSON-CPP項目的自動工具配置腳本,因爲它不能確定它需要與boost_filesystem編譯什麼標誌失敗。快速瀏覽一下confg.log顯示:gcc -R參數有什麼作用?

g++ -o conftest -g -O2 -pthread -L/usr/local/lib -R/usr/local/lib -L/usr/local/libexec conftest.o -lboost_filesystem-mt -lboost_system-mt >&5 
g++: error: unrecognized option '-R' 

因此,很自然,我試圖找出R選項做什麼,但我似乎無法找到它的任何地方記錄。我檢查了herehere無濟於事。該選項有什麼作用,以及如何告訴autotools不要使用它?

回答

6

-R似乎並不對克++或GCC任​​何地方的一個選項。 -R可能是某些平臺上的鏈接器選項,相當於-rpath到gnu ld,...這似乎是升級版本中的已知錯誤...看看Use -Wl to pass arguments to the linker.

它實際上有補丁可用那裏

我重新張貼它的方便,但是請請看看原來的鏈接上面的官方補丁!

--- ../gnote/m4/boost.m4 2011-01-25 14:30:18.000000000 +0200 
+++ m4/boost.m4 2011-02-27 20:57:11.686221539 +0200 
@@ -403,7 +403,7 @@ 
     LDFLAGS=$boost_save_LDFLAGS 
     LIBS=$boost_save_LIBS 
     if test x"$Boost_lib" = xyes; then 
-  Boost_lib_LDFLAGS="-L$boost_ldpath -R$boost_ldpath" 
+  Boost_lib_LDFLAGS="-L$boost_ldpath -Wl,-R$boost_ldpath" 
     Boost_lib_LDPATH="$boost_ldpath" 
     break 6 
     else 
+0

男人,非常感謝,你救了我很多麻煩。它現在編譯好:) –

0

它類似於-rpath,但只在某些平臺上的一個選項。該腳本可能無法檢測到您的平臺?

0

它不是GCC的有效選項,所以也沒有做任何事情。

這可能是爲其他編譯器的有效選項,雖然,這可能是爲什麼autoconf給它一個鏡頭。

不是在config.log文件中的所有錯誤都出了問題。 autoconf通過「猜測」來計算出很多東西,即嘗試一些東西並保持它的效果。

+0

看到我的編輯,但有效的選擇與否,你知道我可以禁用它嗎? –

+0

您的編輯並不意味着它是一個有效的選項。 (嘗試所有其他大寫字母。)我的觀點是:在config.log中的錯誤是_probably_不是問題。來自成功配置運行的config.log始終充滿錯誤。 – Mat

+0

哦,哎呀,你是對的,在那裏做了一個假設哈哈(如果我做-R/usr例如它不起作用)。 –

相關問題