Увеличить проблему скомпилированных заголовков - PullRequest
4 голосов
/ 04 марта 2011

Я пытаюсь прекомпилировать заголовки Boost.

Первый эксперимент - с заголовками std :: headers. Я создаю файл std.hpp:

#include <vector>
#include <iostream>
// And other std:: headers

После этого:

g++ std.hpp

Скопируйте std.hpp.gch в /usr/include/c++/4.4.5

.

И написать тестовую программу:

#include <std.hpp>

int main() {
    std::cout << "Hello, precompiled world!" << std::endl;
    return 0;
}

Работает нормально.

Теперь попробуйте прекомпилировать заголовки Boost.

Я создаю файл boost.hpp:

#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/karma.hpp>

После этого:

g++ boost.hpp

Скопируйте boost.hpp.gch в / usr / local / include / boost

И написать тестовую программу:

#include <boost/boost.hpp>

int main() {
    // Some code...
    return 0;
}

Но получил ошибку:

main.cpp:2:33: error: /usr/local/include/boost/boost.hpp: No such file or directory.

Попробуйте, для эксперимента:

#include </usr/local/include/boost/boost.hpp>

int main() {
    // Some code...
    return 0;
}

Та же ошибка.

Попробуйте скопировать файл boost.hpp.gch в другое место - та же ошибка.

Если я поставлю файл boost.hpp на то же место - работает нормально (поэтому с путем нет проблем):

ls /usr/local/include/boost | grep boost
boost.hpp
boost.hpp.gch

Так что компилятор использует заголовок boost.hpp. Но почему компилятор не видит предварительно скомпилированный boost.hpp.gch ??

1 Ответ

3 голосов
/ 11 марта 2011

Это может быть ошибка gcc, как описано в http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46110

...