4

Boostヘッダーをプリコンパイルしようとしています。

最初の実験 - std:: ヘッダーを使用。ファイル 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

/usr/local/include/boost に boost.hpp.gch をコピーします。

そして、テストプログラムを書きます:

#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 を認識しないのはなぜですか??

4

1 に答える 1

3

これは、 http ://gcc.gnu.org/bugzilla/show_bug.cgi?id=46110 に記載されているように、gcc のバグである可能性があります。

于 2011-03-10T21:43:25.907 に答える