Vortex86DX关于C ++代码/工具链构建

时间:2015-09-25 13:58:30

标签: c++ linux ubuntu gcc

我使用gcc 4.8.2的Ubuntu 12.01并对运行旧的2.6.23内核的Vortex86DX CPU进行了交叉编译。

我正在尝试以下测试代码:

#include <iostream>

int main()
{
   std::cout << "Hello world" << std::endl;
}

使用以下命令行编译:

g++ -march=i586 test.cpp -o test586 -static -static-libgcc -static-libstdc++ 

当我在目标架构上运行test586时,我收到此错误:

$ ./test586
Illegal instruction

好吧,正如here所指出的,我认为我需要为给定的架构构建整个工具链,但我真的很困惑如何做到这一点:

A)我正在使用Ubuntu 12.01,它是为i686架构而构建的。我要在这个Ubuntu中构建新的工具链吗?我应该使用较旧的Ubuntu构建一个VM并编译它(这对我来说是一个问题,因为我需要C ++ 00x -C11支持,而Ubuntu就像10.X gcc不支持它)。

b)我无法构建目标硬件,因为它只有很少的内存和磁盘(256Mb RAM)和非常老的Linux内核2.6.23。

我真的很困惑如何解决这个问题,并且对此表示感谢。 here

1 个答案:

答案 0 :(得分:0)

这是因为您的libstdc ++链接为与vortex平台不兼容的i686版本。当您切换到动态链接(默认情况下启用)时,您的示例将完美运行。