一般来说,这是关于 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 中进行运行时链接。
最佳答案
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 not found"
我相信你会阅读手册页,但你没有。 -R
标志对 Solaris 上的链接器意味着 RUNPATH
,但对于 Linux 链接器它意味着其他。
那么你想要的是:
LDFLAGS="-L$DIR/lib/ -Wl,--rpath=$DIR/lib/"
关于linux - 如何使用 LDFLAGS -R 选项或其他方式在 make 中进行运行时链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254820/