Linux не может извинить двоичный файл

0

Недавно я делаю проект C ++ в Linux. У меня есть исполняемый файл в Linux. Я попытался запустить его и там показал ошибку: не может извинить двоичный файл. Я видел подобные вопросы здесь в SO, и они сказали, что такая ситуация произошла, когда люди пытались запустить программу x86 в процессоре ARM. Но проблема в том, что я использую процессор Intel i5 3230m, и это должна быть архитектура x86. Довольно странно.

Есть еще одна проблема, которая, я думаю, может быть связана с этим. Когда я устанавливаю систему Linux в плеере WMware. Сначала я попытался установить Centosx86_64, но не смог (мой ноутбук должен быть 64-битной системой). Мне пришлось переключиться на Centosi386, чтобы сделать это. Так это также связано с версией WMware Player?

Может кто-нибудь помочь мне немного об этом? Спасибо!

Обновление: Хорошо, я попытался использовать файл, и я понял, что это 64-битный файл (исполняемый файл ELB 64-битный LSB, x86-64, версия 1 (GNU / Linux), динамически связанный (использует разделяемые библиотеки), для GNU / Linux 2.6.24, не раздетый) И только сейчас попробовал lscpu (). Какой сюрприз он демонстрирует архитектуру: i686 cpu op-mode: 32bit. Как такое могло произойти? У меня процессор 32 битная архитектура ?!

user3833612
источник
Вы не сказали, какая у вас хост-система, но если она 32-битная, то вы не можете запускать 64-битные программы ни в натуре, ни в виртуальной машине. Если вы помните Windows 3 (16-разрядная операционная система), было расширение, позволяющее запускать 32-разрядные программы. К сожалению, никто не сделал то же самое, чтобы позволить 64-битным программам работать на 32-битной ОС, хотя я не вижу, что проблема еще больше. Ваше единственное решение - установить 64-битный хост.
AFH
Вы скомпилировали исполняемый файл из исходного кода в той же установке Linux, где вы пытаетесь его запустить?
Ale
Моя хост-система - это 64-битная система Windows и процессор на базе X64 (я вижу, что это свойство системы). Это новый ноутбук, который я купил в прошлом году с 6 ГБ оперативной памяти. Я всегда думал, что это 64-битный, как могло случиться, что теперь мне говорят, что это 32-битный?
user3833612
@AFH: Win32s имел много ограничений по сравнению с реальной 32-битной версией Windows. И все равно требовался физический 32-битный процессор. Поскольку 64-битный Linux легко доступен, такая 64-битная среда для 32-битного Linux (вероятно, с таким же количеством ограничений на то, что он может запускать, как это было в Win32) будет просто большой работой для разработки и поддержки, хотя есть гораздо более простая альтернатива легко доступна.
Ale
@ user3833612 Это говорит вам о 32-битной версии, вероятно, потому что у вас установлена ​​32-битная версия Linux. Можете ли вы проверить тип вашего процессора (cat / proc / cpuinfo)? Так что вы можете быть уверены, что у вас действительно есть 64-битная версия.
Ale