Что делает параметр gcc -R? - PullRequest
5 голосов
/ 22 октября 2011

Я пытаюсь запустить скрипт настройки autotools для проекта bson-cpp, и он не работает, потому что не может определить, какие флаги ему нужны для компиляции с 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, но я не могу найти ее где-нибудь задокументированной. Я проверил здесь и здесь безрезультатно. Что делает опция и как мне сказать autotools не использовать ее?

Ответы [ 3 ]

8 голосов
/ 22 октября 2011

-R нигде не подходит для g ++ или gcc.-R может быть опцией компоновщика на некоторых платформах, которая эквивалентна -rpath к gnu ld, ... Это, похоже, известная ошибка в форсированных сборках ... посмотрите Используйте -Wl для передачи аргументовкомпоновщик.

Там на самом деле есть патч, доступный там

Я повторно публикую его для удобства, однако ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, посмотрите на оригинальный URL, указанный выше, для официального патча!

--- ../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 голосов
/ 22 октября 2011

Это недопустимая опция для GCC, поэтому она ничего не делает.

Возможно, это допустимая опция для других компиляторов, поэтому, возможно, autoconf дает ей шанс.

Не все ошибки в файлах config.log являются проблемой.autoconf вычисляет много вещей, "угадывая", то есть пробуя что-то и сохраняя это, если это сработало.

0 голосов
/ 22 октября 2011

Эта опция похожа на -rpath, но доступна только на некоторых платформах. Возможно, скрипт не может определить вашу платформу?

...