Jes*_*ogt 166 ubuntu g++ cross-compiling 32bit-64bit ubuntu-10.10
我正在运行32位版本的Ubuntu 10.10并尝试交叉编译为64位目标.根据我的研究,我已经安装了g ++ - multilib包.
该程序是一个非常简单的hello世界:
#include <iostream>
int main( int argc, char** argv )
{
std::cout << "hello world" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
g++ -m64 main.cpp
Run Code Online (Sandbox Code Playgroud)
错误:
In file included from main.cpp:1:
/usr/include/c++/4.4/iostream:39: fatal error: bits/c++config.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
我发现了一个c++config.h文件,但他们居住下i486-linux-gnu和i686-linux-gnu目录中/usr/include/c++/4.4/没有c++config.h的/usr/include/c++/bits.
关于我失踪的任何想法?没有-m64标志的编译工作正常(创建并正确运行a.out).
编辑感谢来自@nightcracker的提示,我对32位和64位系统上的包含结构进行了一些调查.我在下面添加了一个答案,暂时"修复"了问题,但我认为它会在下次更新时中断.基本上,我错过了一个名为的目录/usr/include/c++/4.4/i686-linux-gnu/64,该目录应包含一个名为bits具有缺失包含文件的子目录.知道什么包应该照顾这个吗?
Ant*_*ile 284
添加此答案部分是因为它解决了我的同一问题的问题,因此我可以自己为此问题添加书签.
我能够通过执行以下操作来修复它:
sudo apt-get install gcc-multilib g++-multilib
Run Code Online (Sandbox Code Playgroud)
如果您安装了默认情况下未发布的gcc/ 的版本g++(例如g++-4.8在lucid上),您也希望与版本匹配:
sudo apt-get install gcc-4.8-multilib g++-4.8-multilib
Run Code Online (Sandbox Code Playgroud)
orl*_*rlp 10
你尝试添加-I/usr/include/c++/4.4/i486-linux-gnu或-I/usr/include/c++/4.4/i686-linux-gnu?
小智 5
在RHEL 6.2(x86_64)中编译时,我安装了32位和64位libstdc ++ - dev软件包,但我有"c ++ config.h没有这样的文件或目录 "问题.
解析度:
目录/usr/include/c++/4.4.6/x86_64-redhat-linux丢失了.
我做了以下事情:
cd /usr/include/c++/4.4.6/
mkdir x86_64-redhat-linux
cd x86_64-redhat-linux
ln -s ../i686-redhat-linux 32
Run Code Online (Sandbox Code Playgroud)
我现在能够在64位操作系统上编译32位二进制文件.
| 归档时间: |
|
| 查看次数: |
157125 次 |
| 最近记录: |