所以,我已经安装了 32 位的 Xubuntu 14.04.1。我们有一些接口代码,我们打算为我们支持的各种平台和 Windows DLL 发布 SO。(是的,我知道,二进制版本不好,但在这里也不相关。)
-m32
我正在尝试使用/ -m64
gcc/g++ 参数构建具有 32 位 14.04.01 的 32 位和 64 位 SO 。32 位版本工作正常,但 64 位版本失败
/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory
签入包含,该文件确实存在于 32 位但缺少 64 位。
谷歌搜索问题,这似乎在过去发生在 GCC/G++ 4.6 中,但随后被标记为已修复。但是 14.04.1 使用的是 GCC/G++ 4.8,这表明 GCC/G++ 4.8 中的这些库出现了回归。这是别人见过的吗?
如有必要,我可以为 64 位 14.04.1 设置一个新的 VM,看看这是否会选择正确的库版本。不过,如果可能的话,我宁愿不要,因为我还有很多其他的东西我也必须重新安装。有更好的解决方案吗?如果我确实安装了 64 位 14.04.1,我肯定能够交叉编译回 32 位而不会丢失另一个方向的标头吗?
64 位位/c++config.h 文件是通过安装
g++-multilib
包在 32 位系统上提供的(反之亦然),因此您需要使用软件中心、Synaptic 或通过终端使用这只是一个依赖包,它解析
g++-4.8-multilib
为默认的 gcc/g++ 版本,进而依赖于lib64stdc++-4.8-dev
(32 位上的 64 位编译)或libx32stdc++-4.8-dev
(64 位上的 32 位编译) - 正是这些包含实际的头文件。普通 C 编译器有一组等效的包
gcc
。