防止开发版本与系统包冲突

防止开发版本与系统包冲突

我的意思是,我打算在一个开源项目上做一些工作,我已经通过我的系统包安装了该项目。我想知道是否有一个建议的工作流程来管理这种情况,我想保留系统安装的软件包,但也编译并运行我正在开发的版本。

我的问题很笼统,因为我之前在其他项目中也曾想过这个问题,但这个特殊的例子促使我提出这个问题。

我指的项目是激流。当然,该项目还有其他依赖项,但特别是它有同一作者的依赖项:libtorrent。关键是,这两个东西都比我系统的软件包新,所以我需要将它们都拉出来并针对该 libtorrent 版本构建 rtorrent。

到目前为止,我已经编译了 libtorrent,但还没有实际执行,make install因为我想象它会与我的系统包发生冲突。它最终将库文件转储到 中src/.libs,但我想我还需要访问头文件,对吧?

我应该如何继续构建这个 git 克隆的 rtorrent?我以前从未这样做过,所以请原谅我的无知,但这一切都围绕着剧本吗 ./configure?我是否应该简单地使用 useLDFLAGS添加库路径-LCPPFLAGS添加包含路径(对于标头)-I?或者我应该使用 libtorrent 和 rtorrent 的共同点重新./configurelibtorrent --prefix,然后再make install使用 libtorrent?

谢谢!

编辑./configure --help显示这些“有影响的环境变量”

libtorrent_CFLAGS
          C compiler flags for libtorrent, overriding pkg-config
libtorrent_LIBS
          linker flags for libtorrent, overriding pkg-config

我很好奇的是,这给我的印象是,即使我设置LDFLAGSCPPFLAGS,最终它还是会获取 libtorrent 使用的信息pkg-config,所以我必须使用它们。使用这些确实导致了成功的./configure执行,还有一个--prefix我认为我可以继续执行的参数。

答案1

有两种主要方法可以处理这个问题在运行时,使用 rpath 链接,或通过 LD_LIBRARY_PATH 或 LD_PRELOAD 加载开发共享对象。

在编译时,您必须插入必要的 -I / -L 命令行选项(您已经找到了一种方法)。

好吧,对我有用的是使用 rpath-linking 并坚持使用 pkgconfig,通过修补生成的配置文件以发出正确的路径。看这个脚本了解详情。

相关内容