32bit vs 64bit
От: halka Украина  
Дата: 29.05.07 10:02
Оценка:
ОС AIX 5.3. Существует ли способ проверить на какой системе (32-битной или 64-битной) я нахожусь?
Способ
  cout << sizeof(int) << endl;

понятен, но интересует прежде всего возможность получения этой информации с помощью каких-то утилит операционной системы.

Спасибо.
Re: 32bit vs 64bit
От: DerBober США  
Дата: 29.05.07 10:48
Оценка:
Здравствуйте, halka, Вы писали:

H>ОС AIX 5.3. Существует ли способ проверить на какой системе (32-битной или 64-битной) я нахожусь?

H>Способ
H>
H>  cout << sizeof(int) << endl;
H>

H>понятен, но интересует прежде всего возможность получения этой информации с помощью каких-то утилит операционной системы.

sizeof() — не катит
uname -p
Re[2]: 32bit vs 64bit
От: halka Украина  
Дата: 29.05.07 12:35
Оценка:
Здравствуйте, DerBober, Вы писали:

$ uname -p
powerpc
Re[3]: 32bit vs 64bit
От: Аноним  
Дата: 29.05.07 13:01
Оценка:
Здравствуйте, halka, Вы писали:

H>Здравствуйте, DerBober, Вы писали:


H>
H>$ uname -p
H>powerpc
H>


uname -a
Re: 32bit vs 64bit
От: MShura  
Дата: 29.05.07 13:06
Оценка:
H>Способ
H>
H>  cout << sizeof(int) << endl;
H>

H>понятен, но интересует прежде всего возможность получения этой информации с помощью каких-то утилит операционной системы.

А что из этого примера следует?
sizeof(int) подставляет компилятор во время компиляции.
При использовании gcc для 64 битовых платформ sizeof(int) равен 4.
Re[2]: 32bit vs 64bit
От: Аноним  
Дата: 29.05.07 14:58
Оценка:
MS>А что из этого примера следует?
MS>sizeof(int) подставляет компилятор во время компиляции.
MS>При использовании gcc для 64 битовых платформ sizeof(int) равен 4.

А как же ILP64 ? там int 64битный см. таблицу по ссылке:
http://www.ibm.com/developerworks/ru/library/l-port64/index.html
Re[3]: 32bit vs 64bit
От: DerBober США  
Дата: 29.05.07 15:11
Оценка:
Здравствуйте, halka, Вы писали:

H>Здравствуйте, DerBober, Вы писали:


H>
H>$ uname -p
H>powerpc
H>


Не повезло
Re[3]: 32bit vs 64bit
От: MShura  
Дата: 29.05.07 15:26
Оценка:
Здравствуйте, Аноним, Вы писали:

MS>>А что из этого примера следует?

MS>>sizeof(int) подставляет компилятор во время компиляции.
MS>>При использовании gcc для 64 битовых платформ sizeof(int) равен 4.

А>А как же ILP64 ? там int 64битный см. таблицу по ссылке:

А>http://www.ibm.com/developerworks/ru/library/l-port64/index.html

В компиляторах gcc которыми пользуюсь я для компиляции модулей для 64 битной платформы используется модель LP64
Re: 32bit vs 64bit
От: Drey  
Дата: 01.06.07 03:44
Оценка:
Здравствуйте, halka, Вы писали:

H>ОС AIX 5.3. Существует ли способ проверить на какой системе (32-битной или 64-битной) я нахожусь?

H>Способ
H>
H>  cout << sizeof(int) << endl;
H>

H>понятен, но интересует прежде всего возможность получения этой информации с помощью каких-то утилит операционной системы.

H>Спасибо.


А почему нельзя написать простой скрипт, который:
1. Создаст простой C файл:

int main(int argc,char* argv[])
{
  printf("%d\n", sizeof(void*)); /* sizeof(int) не катит - он всегда == 4 байта */
  return 0;
}

2. Откомпилирует его
3. Запустит.

Все это несколько строк. CMake для определения разрядности — именно так и делает (вроде бы )
Re[3]: 32bit vs 64bit
От: Drey  
Дата: 01.06.07 03:46
Оценка:
Здравствуйте, Аноним, Вы писали:

MS>>А что из этого примера следует?

MS>>sizeof(int) подставляет компилятор во время компиляции.
MS>>При использовании gcc для 64 битовых платформ sizeof(int) равен 4.

А>А как же ILP64 ? там int 64битный см. таблицу по ссылке:

А>http://www.ibm.com/developerworks/ru/library/l-port64/index.html

Думал что гоню — на практике всегда было sizeof(int) == 4 байта.
Пошел по вашей ссылке посмотрел. Там написано следующее:

...
* Если вам нужны переменные размером 32 бита на обеих системах, определите их как int.
* Если переменная должна иметь длину 32 бита на 32-разрядных системах и 64 бита на 64-разрядных системах, объявите ее как long.
...

Единственно что там написано, что выравнивание будет по 64 бита, а размерность все равно 32 бита.
Re: 32bit vs 64bit
От: serb Россия  
Дата: 02.07.07 19:04
Оценка:
Здравствуйте, halka, Вы писали:

H>ОС AIX 5.3. Существует ли способ проверить на какой системе (32-битной или 64-битной) я нахожусь?

H>Способ
H>
H>  cout << sizeof(int) << endl;
H>

H>понятен, но интересует прежде всего возможность получения этой информации с помощью каких-то утилит операционной системы.

H>Спасибо.



uname -m
Re: 32bit vs 64bit
От: halka Украина  
Дата: 03.07.07 16:33
Оценка:
Спасибо всем ответившим.
На ОС AIX есть две утилиты: bootinfo и lsconf. Первая к сожалению требует рутовых прав и запустить ее я не смог. Вторая среди прочего вывела:

Kernel Type: 64-bit


Однако хочу заметить, что на некоторых Юниксах 64-битное ядро способно выполнять 32-битные приложения (что-то вроде режима обратной совместимости). Примером может служить HP-UX.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.