【问题标题】:How to do runtime linking in make using LDFLAGS -R option, or some other way如何使用 LDFLAGS -R 选项或其他方式在 make 中进行运行时链接
【发布时间】:2013-06-19 17:46:30
【问题描述】:

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

我正在尝试在 linux 系统上从源代码安装 tmux。它依赖于我安装在主目录中的“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/"

但这不起作用并产生以下错误: 配置:错误:“找不到libevent”

有人可以告诉我如何在运行配置脚本时在 make 中进行运行时链接。

【问题讨论】:

    标签: linux compiler-construction linker installation tmux


    【解决方案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 标志对于 Solaris 上的链接器意味着 RUNPATH,但对于 Linux 链接器,它意味着 else

    那么你想要的是:

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

    【讨论】:

    • 我也试过这种语法,但它说“找不到 libevent”。一定有出路。
    • 非常感谢!!让我试一试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多