У меня есть два компьютера с 64-разрядными процессорами Intel. Один компьютер (А) имеет Ubuntu 10.04 64-битный и второй (В) имеет Ubuntu 11.04 32-разрядные операционные системы, (проверено с помощью команд на этом site)Почему 64-разрядный исполняемый файл, построенный на 64-битной ОС, не запускается на втором 64-битном процессоре с 32-разрядной ОС
Мой по умолчанию компилятор GCC на обе машины. Из того, что я знаю, во время компиляции gcc обнаруживает, какой тип ОС (32 бит/64 бит) компилируется и, соответственно, делает 32-разрядный или 64-разрядный исполняемый файл.
Теперь я написал простую Всемирную программу Hello в C++ на А, а затем пытался выполнить его на B.
сообщение, которое я получил, был
zsh: exec format error: ./hello
Почему это так? Будучи 64-битным процессором, он должен выполнять 64-битный исполняемый файл независимо от того, какой тип операционной системы имеет .
Однако исполняемый файл hello world, построенный на B, запускается на A. Это ожидается, поскольку 64-разрядные CPU должны запускать 32-разрядный исполняемый файл.
Есть ли какая-то концептуальная ошибка, которую я здесь делаю?
А? Если вы создали 64-битную программу, она не будет работать на 32-битной ОС, даже если процессор, если 64 бит? и процессор, и ОС должны быть 64 бит? –