0

一般来说,这是一个关于make中运行时链接的问题。

我正在尝试在 linux 系统上从源代码安装 tmux。它依赖于我安装在主目录中的“libevent”。我不是这个系统的根,所以我不能在系统范围内安装它。

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 中进行运行时链接。

4

1 回答 1

1

LDFLAGS="-L$DIR/lib/" LDFLAGS="-R$DIR/lib/"

设置LDFLAGS-L$DIR/lib/,然后立即用 覆盖它-R$DIR/lib/,与x = 1; x = 2;结果不同x == 2

你想要的是:LDFLAGS="-L$DIR/lib/ -R$DIR/lib/"

“未找到 libevent”

我相信你会阅读手册页,但你没有。该-R标志意味着RUNPATHSolaris 上的链接器,但它对Linux 链接器意味着其他东西。

那么你想要的是:

LDFLAGS="-L$DIR/lib/ -Wl,--rpath=$DIR/lib/"
于 2013-06-22T20:33:38.203 回答