gpt4 book ai didi

linux - 如何针对我也构建的自定义库构建 './configure && make && make install' 软件?

转载 作者:太空狗 更新时间:2023-10-29 11:08:21 27 4
gpt4 key购买 nike

我正在一个非常普通的 Linux 主机上从源代码构建 tmux-2.0。第一次尝试失败,因为安装的 libevent 版本比要求的要旧,所以我继续从源代码下载并构建 libevent-2.0.22写作时间)第一。

libevent 的构建完美无瑕,我想我可以用以下代码重试构建 tmux:

PKG_CONFIG_PATH=$PATH_TO_MY_BUILT_LIBEVENT/lib/pkgconfig ./configure ...

上述调用成功,随后的makemake install也成功。

运行我新构建的 tmux,然而,由于缺少共享对象而中止,libevent-2.0.so.5 不足为奇:

tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

我认为针对自定义库构建意味着它也将在运行时使用? ldd 在我的 tmux 上给我:

linux-vdso.so.1 =>  (0x00007fff8f5ff000)
libutil.so.1 => /lib64/libutil.so.1 (0x0000003cf8800000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x0000003cf7e00000)
libevent-2.0.so.5 => not found
librt.so.1 => /lib64/librt.so.1 (0x0000003ce8600000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003cea200000)
libc.so.6 => /lib64/libc.so.6 (0x0000003ce7600000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003cf7200000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003ce7e00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003ce8200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003ce7200000)

因此,未找到 libevent-2.0.so.5

我是否需要求助于设置,我不知道,LIBSLDFLAGS 或一些其他变量或切换到 configure 脚本上面,所以,我不知道,我新建的 libevent 的路径嵌入到 tmux 二进制文件中,由 ld 提供?

没有 root 权限 - 大学 Linux 工作站 - 坦率地说,我认为我不需要。我也不想乱搞 LD_LIBRARY_PATH 之类的东西。可以说,LD_LIBRARY_PATH=$PATH_TO_MY_LIBEVENT/lib tmux 工作正常。但我希望它“默认”工作,定位并使用我的 libevent

我想这个解决方案几乎适用于所有使用“GNU 构建系统”的软件。在这里做什么是正确的?

最佳答案

您针对库构建,但系统不知道库在哪里。由于您不想安装该库,而是将其留在构建它的地方,您可以使用链接器的 -rpath= 选项解决它 — it embeds a search path将库放入可执行文件中。

只需重建您的应用程序并将其添加到您的 LDFLAGS,例如 LDFLAGS="-rpath=/home/mypath/to/libevent" (但请注意,它是一个链接器选项,并且有可能在 makefile 中作为链接器使用了 gcc 本身——gcc 不知道这个选项,那么你需要这样写 LDFLAGS="-Wl,-rpath=/home/mypath/to/libevent” 强制 gcc 将选项传递给实际的链接器)

顺便说一句,实际上您甚至可以更改rpath,甚至无需重新编译应用程序— there's a tool patchelf为了那份工作。

关于linux - 如何针对我也构建的自定义库构建 './configure && make && make install' 软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30959414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com