如何使用LDFLAGS -R选项或其他方式在make中进行运行时链接

时间:2013-06-22 20:06:08

标签: linux compiler-construction linker installation tmux

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

我正在尝试在linux系统上从源代码安装tmux。它依赖于" libevent"我在家里安装了。我不是这个系统的根,所以我无法在系统范围内安装它。

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

虽然上面的命令有效,但我需要在LD_LIBRARY_PATH中包含$ HOME / libevent,以便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:错误:"找不到libevent"

有人可以让我知道在运行configure脚本时如何在make中运行链接。

1 个答案:

答案 0 :(得分: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/"

  

“找不到解放”

我信任您阅读手册页,但您没有。 -R标志对Solaris上的链接器意味着RUNPATH,但它意味着 else 到Linux链接器。

你想要的是:

LDFLAGS="-L$DIR/lib/ -Wl,--rpath=$DIR/lib/"