Boost预编译头问题
我尝试预编译 Boost 标头。
第一个实验 - 使用 std:: 标头。我创建文件 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 ?
I try to precompile Boost headers.
First experiment - with std:: headers. I create file std.hpp:
#include <vector>
#include <iostream>
// And other std:: headers
After that:
g++ std.hpp
Copy std.hpp.gch in /usr/include/c++/4.4.5
And write test program:
#include <std.hpp>
int main() {
std::cout << "Hello, precompiled world!" << std::endl;
return 0;
}
Works fine.
Now try precompile Boost headers.
I create boost.hpp file:
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/karma.hpp>
After that:
g++ boost.hpp
Copy boost.hpp.gch in /usr/local/include/boost
And write test program:
#include <boost/boost.hpp>
int main() {
// Some code...
return 0;
}
But got error:
main.cpp:2:33: error: /usr/local/include/boost/boost.hpp: No such file or directory.
Try, for experiment:
#include </usr/local/include/boost/boost.hpp>
int main() {
// Some code...
return 0;
}
Same error.
Try copy boost.hpp.gch in another place - same error.
If I put file boost.hpp in same place - works fine (so there is no problems with path):
ls /usr/local/include/boost | grep boost
boost.hpp
boost.hpp.gch
So compiler use boost.hpp header. But why compiler don't see precompiled boost.hpp.gch??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可能是 http://gcc.gnu.org/ 中记录的 gcc 错误bugzilla/show_bug.cgi?id=46110
This might be a gcc bug as documented in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46110