2012-10-19 28 views
0

在旧版本的rhel上运行,版本号为/usr/include/boost。安装了更现代化的boost版本,并在g++中添加了相应的-I选项,以便它几乎总是进入boost目录的新目录。问题在于很多代码库是在几年前针对较旧版本的boost进行编写的,并且包含的​​标头并不存在于更现代的boost中。在这种情况下,cpp愉快地包含/usr/include/boost的标题。避免这种情况的最好方法是什么?我宁愿不更改#include <boost/file.hpp>以明确指向不同的地方,除非我必须并且非常乐意清理依赖于已绝迹标题的代码,如果我只知道它们是什么。这可能是一个持续存在的问题,因为一些从事这个项目的程序员可能习惯于包含已经绝迹的头文件,所以仅仅检查一次是不够的。避免/ usr/include/boost

+0

你可以删除提升的旧副本,并与更换新的一个?这就是我在RHEL系统上所做的。 –

+0

您可以修复源代码或在单独的“假目录”中创建重复的空头文件,并将其添加到'gcc -Ifakedir ...' –

+0

@JohnKugelman我不能,将不得不涉及系统管理员。这是可能的,尽管我希望自己能够处理这个问题。 –

回答

1

而不是试图改变代码查找包含的位置,或更改makefile以包含其他目录,如何更改/usr/include/boost的内容以便它指向新的东西?

这是我想尝试的事:

  1. 重命名/usr/include/boost别的东西,也许/usr/include/boost-old
  2. 创建指向/usr/include/boost一个符号链接 - >/usr/boost/include/boost-old
  3. 您现在可以通过测试此配置编译你的应用程序。它应该包含旧的Boost库。
  4. 安装新的Boost库到一个新的目录,说/usr/include/boost-new
  5. 更改suymbolic链接指向新库/usr/include/boost - >/usr/include/boost-new