Я пытаюсь предварительно скомпилировать заголовки 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 ответ
Это может быть ошибка gcc, как описано в http://gcc.gnu.org/ bugzilla/show_bug.cgi?id=46110
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .
/usr/local/include
отсутствует в вашем пути включения. Попробуйтеg++ -I/usr/local/include
.g++ -I/usr/local/include
- та же ошибка...g++ /usr/local/include/boost/spirit/include/qi.hpp
, после этого удалить qi.hpp с этого места - та же ошибка.