【发布时间】:2012-07-20 18:28:19
【问题描述】:
我正在实现一些我希望尽可能可移植的 C++ 代码。我想避免依赖于需要 root 访问权限才能安装的库。此外,我更愿意避免在我的存储库中保留大型库的副本,并且我也不想对库进行用户级安装(仅仅是因为我必须在多台计算机上手动安装它们。)
我想在我的项目中使用来自 Boost 的 normal_distribution 功能。我知道安装 Boost 的典型方法需要 sudo apt-get 或 sudo yum 类型的命令,但我在运行此代码的系统上没有 root 访问权限。为了解决这个问题,我想知道是否可以简单地将 Boost 的 normal_distribution.cpp 和 normal_distribution.hpp 的副本放在我的代码目录中,然后用这些文件编译/链接我的代码。这行得通吗?
读者可能想知道为什么我不只是在 TR1 或 C++11 中使用normal_distribution 实现。答案是我需要保持与仍然运行 g++ 4.1.x 的一些大学管理的集群的兼容性,这些集群(至少根据我的经验)不支持<TR1/random>。
【问题讨论】:
-
旁注:我正在从事的项目根本不是为了盈利,也不会违反任何 Boost 的许可条款。
-
boost 有一个实用程序可以提取任何标头的依赖项。不是完全100%,但是人工工作大大减少了。看看吧。
-
谢谢,阿尔夫。我查看了使用 BCP (boost.org/doc/libs/1_50_0/tools/bcp/doc/html/index.html) 来提取依赖项——我可能仍然使用它。虽然不确定 BCP 的学习曲线是什么样的,但在尝试 BCP 之前,我可能会看看是否有更容易的事情发生。
-
安装库需要root权限吗?
-
你不需要 root 访问权限,就像大多数库一样,你可以在任何你喜欢的地方安装 boost,然后简单地告诉你的编译器和链接器如何找到它。
标签: c++ boost c++11 installation portability