gcc -R参数有什么作用?

时间:2011-10-22 13:53:51

标签: c++ g++ autotools

我正在尝试为bson-cpp项目运行autotools configure脚本,但它失败了,因为它无法确定使用boost_filesystem编译需要哪些标志。快速浏览一下confg.log会显示:

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不使用它?

3 个答案:

答案 0 :(得分:8)

-R似乎不是g ++或gcc的选项。 -R可能是某些平台上的链接器选项,相当于-rpath到gnu ld,...这似乎是boost构建中的一个已知错误...看看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

答案 1 :(得分:0)

这是一个类似于-rpath的选项,但仅在某些平台上可用。脚本可能无法检测到您的平台?

答案 2 :(得分:0)

它不是GCC的有效选项,因此它不会执行任何操作。

这可能是其他编译器的有效选项,这可能是autoconf给出它的原因。

并非config.log文件中的所有错误都存在问题。 autoconf通过“猜测”来计算出很多东西,即尝试某些东西并保留它,如果它有效。