我应该在符号链接C ++ include目录,以便它也出现在/ usr / include下?

时间:2013-11-11 15:08:17

标签: c++ gcc include-path system-paths

我在Win7 64上使用Cygwin32。我安装了g ++和libstdc ++。 C ++包含位于/usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1/ - 但/usr/include下无处可去。

通过符号链接在/usr/include下放置它们是否合理?如果没有,为什么?如果是这样,为什么默认情况下不会这样做。符号链接应该是什么? /usr/include/c++/?还有别的吗?

注意:是的,我知道我可以将它们添加到编译器标志中;我在问这样做是否合理。

2 个答案:

答案 0 :(得分:1)

如果您正在谈论标准C ++包含,那么应该没有任何需要。注定要使用它们的g ++版本应该知道该位置,并且由于你可能有不同的gcc版本(例如,MinGW的版本),最好留下它,因为它只是为了不混淆其他编译器。

如果你的编译器遇到麻烦找到自己的包含,那么,这完全是另一回事。

如果您对如何以及为何确定此位置感到好奇,请阅读here,特别是在--enable-version-specific-runtime-libs选项下...它说“使用几个gcc版本”在平行下”。您还可以检查libstdc ++ - v3源代码目录下的实际配置脚本......

根据我的个人经验,当您为一堆平台创建单个库时,您只需要(交叉)编译器尽可能独立。如果每个编译器都将其包含放在/ usr / include / c ++中......那么这可能会结束。实际上,在这种特定情况下,每个编译器都可以合理地隐藏其特定的头文件和库文件......

答案 1 :(得分:0)

只需将它们添加到您的环境变量CPPFLAGS(或makefile中):

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