1

我在 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++/? 还有什么?

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

4

2 回答 2

1

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

如果您的编译器无法找到自己的包含,那完全是另一回事。

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

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

于 2013-11-11T15:15:55.213 回答
0

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

CPPFLAGS='-I/usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1 -I/whatev' 
于 2013-11-11T15:16:39.050 回答