uname -m в разных дистрибутивах

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

uname -m в разных дистрибутивах

Сообщение Voral »

Вопрос в следующем:
Команда uname -a в Debian 64bit выдает строку "x86-64". Та же строка отображается во всех 64битных дистрибутивах?



ЗЫ Задача определить скрипт запущен на 64 или 32 битах. Может есть более праведный способ это сделать однозначно унифицировано для любого дистрибуттива?
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: uname -m в разных дистрибутивах

Сообщение Lan4 »

Voral писал(а):
19.01.2012 12:12
Та же строка отображается во всех 64битных дистрибутивах?

Да. Только с подчеркиванием.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: uname -m в разных дистрибутивах

Сообщение SLEDopit »

Lan4 писал(а):
19.01.2012 12:29
Да. Только с подчеркиванием.
Да и в Debian она с подчёркиванием.
Voral что-то напутал (:


UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: uname -m в разных дистрибутивах

Сообщение sash-kan »

расширенный ответ подразумевает встречный вопрос: какую именно информацию вам надо получить и с какой целью в дальнейшем использовать·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: uname -m в разных дистрибутивах

Сообщение deadhead »

/proc/cpuinfo + lm?
getconf LONG_BIT?
[x] close
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: uname -m в разных дистрибутивах

Сообщение Voral »

все верно там подчеркивание. Это был не копипаст - опечатка :)


sash-kan писал(а):
19.01.2012 12:41
расширенный ответ подразумевает встречный вопрос: какую именно информацию вам надо получить и с какой целью в дальнейшем использовать·


Это для Qt проекта. Подготавливаю PRO файл к различным условиям компиляции. В т.ч. компилирование 32битного приложения на 64 битной системе в этой ситуации необходимо сделать дополнительные настройки.

В файле PRO я могу выполнить команду шела и результат засунуть в переменную. Которую потом проанализировать
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: uname -m в разных дистрибутивах

Сообщение sash-kan »

Voral писал(а):
19.01.2012 15:30
компиляции
я так и догадался·
http://lists.debian.org/debian-russian/2011/03/msg00329.html
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: uname -m в разных дистрибутивах

Сообщение Voral »

sash-kan писал(а):
19.01.2012 15:54
Voral писал(а):
19.01.2012 15:30
компиляции
я так и догадался·
http://lists.debian.org/debian-russian/2011/03/msg00329.html

Я так понимаю это в Makefile. На момент когда мне это нужно мейкфайла еще нет вовсе. Хотя тоже вариант понятный
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: uname -m в разных дистрибутивах

Сообщение sciko »

ЕМНИП, то для qmake можно прописать условия в зависимости от архитектуры (Platform Scope).
Что-то типа:
unix:LIBS += -L/usr/local/lib -lmath
win32:LIBS += c:/mylibs/math.lib

Полный список у меня находится в /usr/share/qt4/mkspecs/
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: uname -m в разных дистрибутивах

Сообщение Voral »

sciko писал(а):
19.01.2012 17:33
ЕМНИП, то для qmake можно прописать условия в зависимости от архитектуры (Platform Scope).
Что-то типа:
unix:LIBS += -L/usr/local/lib -lmath
win32:LIBS += c:/mylibs/math.lib

Полный список у меня находится в /usr/share/qt4/mkspecs/

Это не совсем то. Мне нужно различать именно linux 32 и linux 64. (О чем я скоро можно будет посмотреть в том же репозитории ;) )
mkspecs это конечно оно. и когда идет обычная работа qmake все ок. Но вот собираю проект (на 64 разрядной системе) для 32 битной и запускаю qmake
следующим образом

Код: Выделить всё

qmake -spec linux-g++-32

Этот заставлет использовать тот самый файл, что вы сказали. При этом в pro файле можно ставить условия:

Код: Выделить всё

linux-g++-64{
   message(For x86_64)
}
linux-g++-32{
   message(For x86)
}

В случае коомпиляции для 32 на 64 битах. Будет сообщение "For x86"...... А мне внутри этого блока нужно определить если запущенно на 64 битной системе то дополнительные данные (например пути к 32 битным либам. (если компиить на 32 для 32 - это не нужно). вариант с uname -m отлично работает на Дебиан вот я и выяснял не порушиться ли он где то
Сейча примерно так

Код: Выделить всё

UNAME = $$system(uname -m)
linux-g++-64{
   message(For x86_64)
}
linux-g++-32{
   message(For x86)
   eval( UNAME = x86_64) : message(on x86-64 system)
}



PS облом....... "on x86-64 system" выдает даже если поставить x8699 :( Пошел дальше читать доку

UPD pps это я дурак.... Открывающую скобку перенес на другую строку. Зато нашел замену для eval - equals
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: uname -m в разных дистрибутивах

Сообщение sash-kan »

Voral писал(а):
19.01.2012 16:41
Я так понимаю это в Makefile.
хм, а при чём тут makefile?
вас смутило написание имени c-compliler-а?
ну, вызывайте его как "cc"·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: uname -m в разных дистрибутивах

Сообщение Voral »

sash-kan писал(а):
19.01.2012 21:53
вас смутило написание имени c-compliler-а?
ну, вызывайте его как "cc"·

Не не. Все нормально. За совет спасибо.
ТО была первая реакция. Потом осознал, что можно так же использовать.
Хотя, об варианта кажутся равнозначными.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: uname -m в разных дистрибутивах

Сообщение sash-kan »

Voral писал(а):
19.01.2012 22:23
Хотя, об варианта кажутся равнозначными
второй — это вывод uname?
могу, конечно, заблуждаться, но с помощью uname вы получите информацию о ядре, а не об операционной системе·
а это, вообще-то, несколько разные вещи·
если, например, вы собираете модуль для ядра, или что-то, непосредственно с ядром взаимодействующее, то, конечно, нужна информация о ядре·
а если что-нибудь прикладное компилируете, то вам нужна информация об операционной системе, с которой и будет взаимодействовать ваша программа·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: uname -m в разных дистрибутивах

Сообщение Voral »

sash-kan писал(а):
19.01.2012 22:38
могу, конечно, заблуждаться, но с помощью uname вы получите информацию о ядре, а не об операционной системе·
а это, вообще-то, несколько разные вещи·

ЕСли так, то конечно логично. Хотя может ли быть ядро 64, а ОС 32 (или наоборот)?
Опять же такие вопросы (как то даже не озадачивался) возникают:
А обязательно (при условии, что компилятор способный скомпилировать мой код установлен в системе) присутствует cc или gcc?
Всегда оба или какойто есть точно и всегда?
Или может быть другой компилятор?
Как определить какой есть?
И т.п.

(Правда на эту тему даже не гуглил пока)
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: uname -m в разных дистрибутивах

Сообщение sciko »

сс всегда должен быть в POSIX системе, а gcc -- как получится.
Voral писал(а):
19.01.2012 18:27
А мне внутри этого блока нужно определить если запущенно на 64 битной системе то дополнительные данные (например пути к 32 битным либам
У меня всё нормально работает и без дополнительных настроек. Видимо я что-то делаю не так.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: uname -m в разных дистрибутивах

Сообщение sash-kan »

Voral писал(а):
20.01.2012 10:16
может ли быть ядро 64, а ОС 32
запросто
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: uname -m в разных дистрибутивах

Сообщение sash-kan »

Voral писал(а):
20.01.2012 10:16
А обязательно (при условии, что компилятор способный скомпилировать мой код установлен в системе) присутствует cc или gcc?
наличие cc — это как бы обязательное условие для компиляции программы, написанной на c·

в реальной жизни это, как правило, симлинк на актуальный компилятор·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: uname -m в разных дистрибутивах

Сообщение Voral »

sciko писал(а):
20.01.2012 10:24
сс всегда должен быть в POSIX системе, а gcc -- как получится.
У меня всё нормально работает и без дополнительных настроек. Видимо я что-то делаю не так.

А где вы указываете пути где искать 32 bitные libqt*.so ?


sash-kan писал(а):
20.01.2012 10:52
наличие cc — это как бы обязательное условие для компиляции программы, написанной на c·
в реальной жизни это, как правило, симлинк на актуальный компилятор·

Ок. Спасибо.
Убедили.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: uname -m в разных дистрибутивах

Сообщение sciko »

Voral писал(а):
20.01.2012 11:57
А где вы указываете пути где искать 32 bitные libqt*.so ?
Нигде. Единственное, что я стараюсь в Makefile добавлять как можно меньше параметров, чтобы не забивать дефолтный конфиг.
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: uname -m в разных дистрибутивах

Сообщение Voral »

sciko писал(а):
20.01.2012 13:00
Нигде что я стараюсь в Makefile добавлять как можно меньше параметров, чтобы не забивать дефолтный конфиг.

Но у вас 64bit ная ОС? И мы говорим о компиляции 32bit ной версии?
(Makefile я вообще руками не трогаю)


UPD Трындец......... Теперь и у меня компилируется...... А вчера выдавало что не может найти либу........... :crazy:
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали: