【问题标题】:Is there an equivalent of python's virtualenv for C/C++ programs?对于 C/C++ 程序,是否有相当于 python 的 virtualenv?
【发布时间】:2013-02-04 11:26:36
【问题描述】:

我必须开发必须在 Scientific Linux 5 或 6 上运行的 C++ 程序。我想在 Ubuntu 上使用 QtCreator 进行开发,它的库比 SCL6 上的库更新得多。

对于 C/C++ 程序,是否有相当于 Python 的 virtualenv?

使用具有所有必需库和依赖项的 chroot 可以完成这项工作。这存在吗?有关 chroot 的使用,请参阅 http://rcrowley.org/articles/dependencies.html

【问题讨论】:

  • “使用带有所有必需库和依赖项的 chroot 可以完成这项工作。这存在吗?” - 是的,但是您必须自己设置它,然后您显然无法从 chroot 读取/写入用户文件。但是您可能同样可以将依赖项放在同一目录中和/或在加载主应用程序的启动脚本中操作 LD_LIBRARY_PATH。但是你真的需要使用更新的库吗?像这样进行临时更新通常比值得做的更麻烦。
  • 确实,我并不真正需要 chroot 提供的安全性。但是在 SCL6 上下文中查看我的程序的 ldd 输出,我看到像 /lib/ld-linux.so.2 这样的库依赖项在 Debian 和 SCL6 之间可能不同。我还看到一个没有特定路径的库 linux-gate.so.1。所以我什至不确定程序是否会在 chroot 环境中运行,因为我不知道将这个库放在哪里。
  • 你没有。 linux-gate 是内核的一个接口——它是一个虚拟库,不存在于磁盘上。 ld-linux 是共享库加载器(我认为)并且也非常标准。任何直接与内核接口的库(我也认为是 libc)在 Linux 发行版之间可能会有所不同,因为内核会有所不同。您应该能够使用就地存在的库。
  • 您想在 Ubuntu 上创建类似 SCL6 的环境进行开发,还是在 SCL6 上创建类似 Ubuntu 的环境进行部署?我推荐后者。它只需要随您的程序一起提供一些库。

标签: c++ c virtualenv


【解决方案1】:

使用 debootstrap 创建 chroot 环境(甚至将 ubuntu 安装在单独的分区上)。使用 mount -o bind 挂载你的主目录。使用 schroot 方便 chroot 设置。

http://manpages.ubuntu.com/manpages/precise/en/man8/debootstrap.8.html

http://manpages.ubuntu.com/manpages/precise/en/man8/mount.8.html

http://manpages.ubuntu.com/manpages/precise/en/man1/schroot.1.html

【讨论】:

    【解决方案2】:
    【解决方案3】:

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

    【讨论】:

    • 当依赖关系没有太大变化时,这看起来很有趣。就我而言,我在 debian 计算机上,需要开发与 SL5 OS 有依赖关系的代码。我也希望能够使用 QtCreator 进行开发。
    【解决方案4】:

    您可以使用 bazel (https://bazel.build/) 或 please (https://please.build/) 等构建系统为给定项目建立依赖关系和编译器。

    由于语言的不同性质,它永远不会与 virtualenv 完全相同,因为它仍将使用系统编译器。如果您想让您的项目完全隔离,您可以将项目放在 docker 容器上。

    【讨论】:

      【解决方案5】:

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

      关于不同操作系统的IDE:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        • 1970-01-01
        • 2021-10-09
        相关资源
        最近更新 更多