Как сделать компоновку во время выполнения в make с помощью опции LDFLAGS -R или каким-либо другим способом

Это вопрос о компоновке во время выполнения в make в целом.

Я пытаюсь установить tmux из исходного кода в системе Linux. Он зависит от «libevent», который я установил в домашнем каталоге. Я не являюсь пользователем root в этой системе, поэтому я не могу установить ее в общесистемной области.

DIR=$HOME/libevent ./configure --prefix=$HOME/site/tmux/ CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib/"

Хотя приведенная выше команда работает, но мне нужно, чтобы $HOME/libevent был включен в LD_LIBRARY_PATH все время, чтобы tmux работал. Я думаю, что должен быть лучший способ.

Мне нужна ссылка во время выполнения, чтобы мне не приходилось возиться с LD_LIBRARY_PATH. Я прочитал здесь http://www.ilkda.com/compile/Environment_Variables.htm, что , этого можно добиться с помощью опции "-R".

./configure --prefix=$HOME/site/tmux/ CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib/" LDFLAGS="-R$DIR/lib/"

Но это не работает и выдает следующую ошибку: configure: error: "libevent not found"

Может ли кто-нибудь дать мне знать, как выполнить компоновку во время выполнения в make при запуске скрипта configure.


person Vivek Jha    schedule 22.06.2013    source источник


Ответы (1)


LDFLAGS="-L$DIR/библиотека/" LDFLAGS="-R$DIR/библиотека/"

Устанавливает LDFLAGS в -L$DIR/lib/, а затем немедленно переопределяет его с помощью -R$DIR/lib/, мало чем отличаясь от x = 1; x = 2;, что приводит к x == 2.

Что вам нужно: LDFLAGS="-L$DIR/lib/ -R$DIR/lib/"

"libevent не найден"

Я доверял вам читать справочную страницу, но вы этого не сделали. Флаг -R означает RUNPATH для компоновщика в Solaris, но означает что-то другое для компоновщика Linux.

То, что вы хотите, это:

LDFLAGS="-L$DIR/lib/ -Wl,--rpath=$DIR/lib/"
person Employed Russian    schedule 22.06.2013
comment
Я тоже пробовал этот синтаксис, но он говорит, что libevent не найден. Должен быть какой-то выход. - person Vivek Jha; 24.06.2013
comment
Большое спасибо !! Позвольте мне попробовать. - person Vivek Jha; 04.07.2013