У меня Ubuntu 12.01 с gcc 4.8.2 и сделал кросс-компиляцию для Vortex86DX-процессора, работающего под старым ядром 2.6.23.Vortex86DX Нелегальная инструкция по коду C++/toolchain build
я пытаюсь следующий код тестирования:
#include <iostream>
int main()
{
std::cout << "Hello world" << std::endl;
}
Это скомпилирован с помощью следующей командной строки:
g++ -march=i586 test.cpp -o test586 -static -static-libgcc -static-libstdc++
Когда я бегу test586 на целевой архитектуре I'm получаю эту погрешность:
$ ./test586
Illegal instruction
Ну, как указано here, это означает, что я необходимо построить всю инструментальную цепочку для данной архитектуры, но я действительно запутался в том, как это сделать:
A) Поскольку я использую Ubuntu 12.01, он построен для архитектуры i686. Должен ли я построить новую инструментальную цепочку в этом Ubuntu? Должен ли я построить виртуальную машину с более старым Ubuntu и скомпилировать ее (для меня это проблема, так как мне нужна поддержка C++ 00x-C11, а Ubuntu, например, 10.X gcc ее не поддерживает).
b) Я не могу построить целевое оборудование, так как у него очень мало памяти и диска (256 Мб ОЗУ) и очень старое ядро Linux 2.6.23.
Я действительно очень смущен тем, как это решить, и помощь приветствуется. here
Какова инструкция, на которую она жалуется? – harold
Вы перестанете добавлять тег C для кода на C++? – Olaf
harold, как я могу это узнать? – Mendes