Вопрос Я работаю 32-битный или 64-битный?


Я знаю, что этот вопрос задавался несколько раз, но моя система, похоже, противоречит самому себе ...

После ответа на это вопрос, я выполнил следующее:

$ uname -a
Linux manaha 3.13.7-x86_64-linode38 #1 SMP Tue Mar 25 12:59:48 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
$ file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xc0d86a25a7abb14cad4a65a1f7d03605bcbd41f6, stripped

Так что пока uname кажется, предлагает 64-битные, /sbin/init предлагает 32-битный. Что тут происходит?


2
2018-04-20 15:29


происхождения


Это странно! Вы когда-либо перекомпилировали ядро ​​самостоятельно? - jobin
dpkg --print-architecture даст вам оригинальную архитектуру. - Avinash Raj
$ dpkg --print-architecture доходность i386, Я не перекомпилировал ядро ​​- этот ящик размещен Linode, и недавно я поменялся на ядро ​​в своем бэкэнде веб-управления, чтобы включить некоторые бесплатные обновления, которые они предлагали. - forquare


ответы:


При вычислении Исполняемый и Связываемый Формат (ELF) является обычным стандартным файловым форматом для исполняемых файлов, объектного кода, разделяемых библиотек и дампов ядра. В вашем вопросе /sbin/init: ELF 32-bit LSB shared object идентифицирует ELF как формат для 32-разрядного общего объекта из общей библиотеки. Ваша операционная система - это 64-разрядная ОС, в которой есть 32-разрядный общий объект. В этом нет противоречия.


2
2018-04-20 15:47



Это означало бы file /sbin/init не является надежным способом узнать, используете ли вы 32-разрядную или 64-разрядную ОС, верно? - jobin
@Jobin uname -a является более простым и менее потенциально запутанным способом узнать, используете ли вы 32-разрядную или 64-разрядную ОС, чем file /sbin/init, - karel
Так что если init 32-бит, и init запускает все процессы (извините, прошло несколько лет с тех пор, как я сделал этот низкоуровневый материал), означает ли это, что я могу запускать только 32-разрядные приложения, но ядро ​​работает в 64-битном режиме? - forquare
Взгляни на этот ответ что я опубликовал сегодня. Это также поможет прочитать вопрос и посетить ссылку в ответе. В двух словах, 64-разрядное (64-разрядное ядро ​​Linux) Ubuntu 14.04 также может запускать 32-разрядные приложения, запустив команду: sudo dpkg --add-architecture i386, - karel


Пока команда uname сообщает вам что-то о вашей системе, команда файла сообщает вам что-то о файле. Таким образом, команда файла говорит, что «init» - это 32-битный файл, а команда uname говорит, что у вас 64-разрядный компьютер. Надеюсь, это поможет.
Пожалуйста, укажите любые ошибки, которые я сделал как можно быстрее, на всякий случай это наносит какой-либо вред.
PS Вы прочитали другие ответы на сообщение, на которое вы ссылаетесь? Этот ответ кажется очень простым способом узнать вашу архитектуру: https://askubuntu.com/a/65731/271517


0
2018-04-20 15:55