在Fedora 12上的GCC4.4.4上缺少C ++ - stl_alloc.h?

时间:2010-08-12 19:38:44

标签: c++ gcc fedora bsd

我正在移植应用程序 从BSD平台到Linux机箱。在编译时,我发现某些头文件调用了<bits/stl_alloc.h>,这在我的计算机中是丢失的。有没有人知道我在哪里可以找到它和/或为什么它会丢失?

我正在使用GCC4.4.4运行Fedora 12计算机。

1 个答案:

答案 0 :(得分:1)

您的错误消息显示缺少位目录中的文件。这可能导致两种可能的方式:

  1. 您已从应用程序中明确包含此文件。那是你的错,因为它不是标准的标题,它可能不在你的标准包含路径中。你应该避免这样做。与OS交互的大多数必要机制都在标准库中(或者在专门为可移植性而设计的其他机制中),因此您使用比使用特定STL实现的位更好的解决方案。

  2. 此文件间接包含在STL的某些标准标头中。问题是Fedora上的STL实现可以是可移植的,并且可能有一些BSD支持。它的标题中可以包含以下代码:

    #ifdef __BSD__
    // BSD-specific include file
    #include <bits/stl_alloc.h>
    #elsif defined __LINUX__
    #include <bits/linux_alloc.h>
    #endif
    

    通常,在Linux上开发的程序会包含正确的文件。但是,您的程序可能已经自己定义了BSD指纹,这个指纹可能会被STL实现误解为应该包含其特定于BSD的部分。如果你只在BSD上构建它,你根本就没有注意到它。