【发布时间】: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