有没有类似于Python的virtualenv的东西可以用于C/C++程序?

32

我需要开发在Scientific Linux 5或6上运行的C++程序。 我想使用Ubuntu上的QtCreator进行开发,因为它拥有比SCL6更新的库。

是否存在类似于Python虚拟环境的东西来管理C/C++程序的依赖关系?

使用chroot和所有所需的库和依赖项可能可以完成任务。 这个存在吗?请参见http://rcrowley.org/articles/dependencies.html中对chroot的使用说明。


使用带有所有必需库和依赖项的chroot可以完成任务。这样的东西存在吗?- 当然存在,但您必须自己设置它,而且您显然无法从chroot之外读取/写入用户文件。但是,您可能同样可以将依赖项放置在同一目录中,并且/或者在启动脚本中操纵LD_LIBRARY_PATH以加载您的主应用程序。但是您真的需要使用更新的库吗?这样做通常比较麻烦,而且不值得进行特别更新。 - Rup
实际上,我并不真正需要chroot提供的安全性。但是,在SCL6环境中查看我的程序的ldd输出时,我发现像/lib/ld-linux.so.2这样的库依赖项在Debian和SCL6之间可能会有所不同。我还看到一个没有特定路径的库linux-gate.so.1。因此,我甚至不确定程序是否能在chroot环境中运行,因为我不知道该将此库放在哪里。 - chmike
你不需要这样做。linux-gate是与内核交互的接口 - 它是一个虚拟库,不存在于磁盘上。ld-linux是共享库加载器(我想),也很标准。任何直接与内核交互的这些库(我认为libc也是)可能在Linux发行版之间有所不同,因为内核会有所不同。你应该只需使用已经存在的库即可。 - Rup
你想在Ubuntu上创建一个类似SCL6的开发环境,还是在SCL6上创建一个类似Ubuntu的部署环境?我建议选择后者。这只需要将几个库与你的程序一起打包即可。 - n. m.
5个回答

7

6

1

我不确定它是否足够轻便以满足您的需求(我对virtualenv并不是很熟悉),但您可以尝试使用CDE Project,这是一种非常好的创建虚拟沙盒并带有各种依赖项的方法。


当依赖关系不经常更改时,这看起来非常有趣。在我的情况下,我使用debian计算机,并需要开发具有SL5操作系统依赖项的代码。我还希望能够使用QtCreator进行开发。 - chmike

1
你可以使用构建系统(例如bazel(https://bazel.build/)或please(https://please.build/))来为给定的项目建立依赖关系和编译器。
由于语言的不同性质以及仍然使用系统编译器,它永远不会完全与virtualenv相同。如果你想完全隔离项目,可以将项目封装在docker容器中。

0

我同意使用依赖项的SeF。对我来说,IDE帮助设置了不同的开发环境。

关于不同操作系统的IDE:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接