Я компилирую C++ в Debian Linux (64-разрядная версия), и мне нужно иметь возможность компилировать в 32-разрядную версию для другой системы. Двоичные файлы не будут работать в моей 64-битной системе, и их запуск там будет гораздо удобнее для тестирования.
Мой C++ для тестирования это int main () { std::cout << "This is Main.cpp" << std::endl; } с включенным iostream, так что ничего особенного.
Моя строка компиляции g++ -m32 Main.cpp
Когда я делаю ./a.out, я получаю -bash: ./a.out: cannot execute binary file: Exec format error
Я провел немало поисков, пытаясь решить эту проблему, и установил apt: libc6:i386, libncurses5:i386 и libstdc++6:i386.
Любые другие идеи, чтобы исправить это, будут высоко оценены.
file ./a.out? Вы можете запускать 64-битные двоичные файлы (компилировать без-m32)? - person Hadi Brais   schedule 08.04.2018-m32, и когда я компилирую с-m32, чтобы получить 32-битный a.out, и я делаюfile a.out, я получаюa.out: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e1483a60a1b26d9b3738bb963e90e713b515031b, not stripped- person G3yost   schedule 08.04.2018ELF 32-bit LSB executable..., а неELF 32-bit LSB shared object...Почему компилятор выдает общий объект? Он должен выдать исполняемый файл. Общий объект нельзя запустить с помощью./a.out. - person Hadi Brais   schedule 08.04.2018fileс-m32и-m64, которые раньше считались исполняемыми файлами. Мне не терпится нырнуть в эту кроличью нору. Спасибо! - person G3yost   schedule 08.04.2018