我的意思是,我打算在一个开源项目上做一些工作,我已经通过我的系统包安装了该项目。我想知道是否有一个建议的工作流程来管理这种情况,我想保留系统安装的软件包,但也编译并运行我正在开发的版本。
我的问题很笼统,因为我之前在其他项目中也曾想过这个问题,但这个特殊的例子促使我提出这个问题。
我指的项目是激流。当然,该项目还有其他依赖项,但特别是它有同一作者的依赖项:libtorrent。关键是,这两个东西都比我系统的软件包新,所以我需要将它们都拉出来并针对该 libtorrent 版本构建 rtorrent。
到目前为止,我已经编译了 libtorrent,但还没有实际执行,make install
因为我想象它会与我的系统包发生冲突。它最终将库文件转储到 中src/.libs
,但我想我还需要访问头文件,对吧?
我应该如何继续构建这个 git 克隆的 rtorrent?我以前从未这样做过,所以请原谅我的无知,但这一切都围绕着剧本吗 ./configure
?我是否应该简单地使用 useLDFLAGS
添加库路径-L
并CPPFLAGS
添加包含路径(对于标头)-I
?或者我应该使用 libtorrent 和 rtorrent 的共同点重新./configure
libtorrent --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
我很好奇的是,这给我的印象是,即使我设置LDFLAGS
和CPPFLAGS
,最终它还是会获取 libtorrent 使用的信息pkg-config
,所以我必须使用它们。使用这些确实导致了成功的./configure
执行,还有一个--prefix
我认为我可以继续执行的参数。
答案1
有两种主要方法可以处理这个问题在运行时,使用 rpath 链接,或通过 LD_LIBRARY_PATH 或 LD_PRELOAD 加载开发共享对象。
在编译时,您必须插入必要的 -I / -L 命令行选项(您已经找到了一种方法)。
好吧,对我有用的是使用 rpath-linking 并坚持使用 pkgconfig,通过修补生成的配置文件以发出正确的路径。看这个脚本了解详情。