Я должен символическую ссылку C++ include каталог, чтобы он также появился в /usr/include?
Я использую Cygwin32 на Win7 64. У меня установлены g ++ и libstdC++. C++ включает в себя расположены по адресу /usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1/
- но нигде /usr/include
,
Разумно ли разместить их по символической ссылке под /usr/include
? Если нет, то почему? И если так, то почему это не сделано по умолчанию? И какой должна быть символическая ссылка? /usr/include/c++/
? Что-то другое?
Примечание. Да, я знаю, что могу добавить их в флаги компилятора; Я спрашиваю, разумно ли делать больше, чем это.
2 ответа
Там не должно быть никакой необходимости, если вы говорите о стандартных C++ включает. Версия g++, предназначенная для их использования, должна знать об этом местоположении, и, поскольку у вас могут быть разные версии gcc (например, версия MinGW), лучше оставить ее, так как это не должно путать другие компиляторы.
Если у вашего компилятора возникают проблемы с поиском собственных включений, то это совсем другое дело.
Если вам интересно, как и почему определяется это местоположение, прочтите здесь, в частности, под опцией --enable-version-specific-runtime-libs ... в нем говорится что-то об "использовании нескольких версий gcc параллельно". Вы также можете проверить фактический скрипт настройки в каталоге исходного кода libstdC++-v3...
По моему личному опыту, когда вы создаете одну библиотеку для нескольких платформ, вы просто хотите, чтобы (кросс) компиляторы были максимально независимыми. Если каждый компилятор помещает свои включения в /usr/include/ C++ ... ну, это может плохо кончиться. Фактически, в соответствии с этим конкретным сценарием для каждого компилятора может быть разумно как можно лучше скрыть свои конкретные заголовочные и библиотечные файлы...
Просто добавьте их в переменную среды CPPFLAGS
(или в вашем makefile
):
CPPFLAGS='-I/usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1 -I/whatev'