提升预编译头文件的问题

时间:2011-03-04 08:43:15

标签: c++ gcc boost precompiled

我尝试预编译Boost标头。

第一个实验 - 使用std :: headers。我创建文件std.hpp:

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

之后:

g++ std.hpp

在/ usr / include / c ++ / 4.4.5

中复制std.hpp.gch

编写测试程序:

#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 个答案:

答案 0 :(得分:3)

这可能是http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46110

中记录的gcc错误