14.04.01 32位:交叉编译时缺少g ++ 64位包含文件


8

因此,我安装了32位的Xubuntu 14.04.1。我们有一些接口代码,打算在其中发布针对我们支持的各种平台的SO和Windows DLL。(是的,我知道二进制发布不好,但在这里也没有关系。)

我正在尝试使用-m32/ -m64gcc / 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

检入include文件时,该文件对于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位而不会在另一个方向上丢失标头吗?


...也许您应该避免提及“与此处无关”的内容,因为它们不相关。
mikewhatever,2015年

2
您安装了g++-multilib软件包吗?
steeldriver

@steeldriver谢谢-就是这样!看起来默认情况下是64位安装具有此功能,而32位安装则没有。好,将其他内容添加到“如何设置Linux构建VM”清单中。:)这似乎很基本,但是我并没有在相同的编译错误的其他人的问题中找到答案,而且我并不是Linux专家。
格雷厄姆

Answers:


9

通过安装g++-multilib软件包,在32位系统上提供了64位bits / c ++ config.h文件(反之亦然),因此您需要使用Software Center,Synaptic或通过使用以下命令的终端来安装该软件包:

sudo apt-get install g++-multilib

这只是一个解析包,可以解析g++-4.8-multilib为默认的gcc / g ++版本,并且依次依赖于lib64stdc++-4.8-dev(32位的64位编译)或libx32stdc++-4.8-dev(64位的32位编译)-这些文件包含以下内容:实际的头文件。

对于纯C编译器,有一组等效的软件包gcc


4
sudo apt-get install g++-5-multilib给我我需要的版本。如果这对您不起作用,请注意sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update也是我的配置的一部分。
U007D'8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.