Как я могу узнать, что я работаю в 64-битном или 32-битном Linux из скрипта Perl? - PullRequest
2 голосов
/ 16 марта 2011

Я не хочу получать прямой доступ к оболочке (например, использовать uname). Я ищу быстрый способ определения архитектуры (только если она 32- или 64-разрядная), как только я узнаю, что нахожусь на Linux.

Ответы [ 2 ]

6 голосов
/ 16 марта 2011

Есть 3 отдельных вопроса, которые вы могли бы задавать:

Обратите внимание на то, что нет ни одного волшебного "64-битного", есть много разных вещей, которые могут означать.

  1. Что за аппаратная часть?- /proc/cpuinfo содержит эту информацию в разобранном виде.В основном вам нужно иметь таблицу с различными процессорами.Я верю, что вы получите числа больше 32 в «размерах адресов», если ядро ​​64-битное.
  2. Что такое ОС / ядро?- Я считаю, use POSIX; и проверка (POSIX::uname())[4] - это канонический ответ, но -d /lib64, -d /usr/lib64 истинность также является хорошим показателем.
  3. Это 64-битный Perl?- use Config; и посмотрите на $Config{archname}, $Config{myarchname}, $Config{use64bitint} или какую-то другую переменную в Config, которая соответствует тому, что, как вы считаете, означает "64-битный".
1 голос
/ 16 марта 2011
perl -e 'use Config; print $Config{longsize}';

Вернет 8 байтов в 64-битной реализации Perl и 4 байта в 32-битной реализации Perl.

Если вы действительно хотите проверить оборудование, вам придется либосделать uname или проверить что-то, что разумно существует только на 64-битной машине (например, / lib64).Обратите внимание, что зачастую не очень полезно знать аппаратную поддержку для 64-разрядных систем, если вы застряли в 32-разрядном приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...