2013-11-11 6 views
1

Я использую Cygwin32 на Win7 64. У меня установлены g ++ и libstdC++. C++ включает в себя: /usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1/ - но нигде под /usr/include.Должен ли я ссылаться на каталог каталогов C++, чтобы он также отображался в каталоге/usr/include?

Можно ли разместить их по символической ссылке под /usr/include? Если нет, то почему? И если да, почему это не делается по умолчанию И что должно символической ссылки? /usr/include/c++/? Что-то другое?

Примечание: Да, я знаю, что могу добавить их в флагов компилятора; Я спрашиваю, разумно ли делать больше, чем это.

ответ

1

Не должно быть необходимости, если вы говорите о стандартном C++. Версия g ++, предназначенная для их использования, должна знать об этом местоположении, и поскольку у вас могут быть разные версии gcc (например, MinGW), лучше оставить ее, так как просто не следует путать другие компиляторы.

Если у вашего компилятора есть проблемы, связанные с его собственными включениями, ну, это совсем другое дело.

Если вам интересно, как и почему это местоположение определено, прочитайте here, в частности, по опции --enable-version-specific-runtime-libs ... в нем говорится о «использовании нескольких версий gcc параллельно», , Вы также можете проверить подлинный скрипт configure в каталоге исходного кода libstdC++ - v3 ...

В моем личном опыте, когда вы создаете единую библиотеку для кучи платформ, вы просто хотите, чтобы (кросс-компиляторы) были независимыми насколько это возможно. Если каждый компилятор помещает свои включения в/usr/include/C++ ... хорошо, это может закончиться плохо. В самом деле, при этом конкретном случае, это может быть разумным для каждого компилятора, чтобы скрыть свои специфические заголовочные и библиотечные файлы, а также, насколько это возможно ...

+0

Eclipse CDT, кажется, не замечает их ... – einpoklum

+0

Eclipse CDT является «своеобразным» по-своему ... есть способы для запроса г ++ для включают пути, и CDT, кажется, знает о них .. но все это очень хрупко, и я предполагаю, что заставить его работать может быть особенно сложно в Windows. – dsign

+0

Тем не менее, почему я вижу файлы include под '/ usr/lib', а не'/usr/include'? – einpoklum

0

Просто добавьте их в переменную окружения CPPFLAGS (или в вашей makefile):

CPPFLAGS='-I/usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1 -I/whatev'