Gra*_*ham 8 64-bit gcc c++ g++ cross-compilation
所以,我已经安装了 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
Run Code Online (Sandbox Code Playgroud)
签入包含文件,该文件真正存在于 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 或通过终端使用
sudo apt-get install g++-multilib
Run Code Online (Sandbox Code Playgroud)
这只是一个解析g++-4.8-multilib
为默认 gcc/g++ 版本的依赖包,反过来又依赖于(32 位上的 64 位编译lib64stdc++-4.8-dev
)或libx32stdc++-4.8-dev
(64 位上的 32位编译)——正是这些包含了实际的头文件。
对于普通的 C 编译器,有一组等效的包gcc
。
归档时间: |
|
查看次数: |
16963 次 |
最近记录: |