C ++ - stl_alloc.h отсутствует на GCC4.4.4 на Fedora 12? - PullRequest
2 голосов
/ 12 августа 2010

Я в процессе портирования приложения с платформы BSD на коробку Linux. При компиляции я обнаружил, что некоторые заголовочные файлы вызывают <bits/stl_alloc.h>, чего нет на моем компьютере. У кого-нибудь есть идеи относительно того, где я могу найти это и / или почему это отсутствует?

Я использую машину Fedora 12 с GCC4.4.4.

1 Ответ

1 голос
/ 12 августа 2010

Ваше сообщение об ошибке показывает, что файл из каталога битов отсутствует.К этому могут привести два возможных пути:

  1. Вы явно включили этот файл из своего приложения.Это ваша вина, так как это не стандартный заголовок, и он не может быть в вашем стандартном пути включения.Вы должны избегать этого.Большинство необходимых механизмов взаимодействия с ОС находятся в стандартной библиотеке (или в других, специально разработанных для переносимости), поэтому у вас есть лучшие решения, чем использование битов конкретной реализации STL.

  2. Этот файл включен косвенно из некоторых стандартных заголовков STL.Дело в том, что реализация STL в Fedora может быть переносимой и иметь некоторую поддержку 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, вы бы его вообще не заметили.

...