[LUGOS] uname, "laganje o arhitekturi" in kako izvedeti pravo arhitekturo

Matjaz Kljun matjaz.kljun at upr.si
Thu Nov 19 11:07:41 CET 2009


Ojla ...

Žal na vseh platformah ne obstaja enotem ukaz v lupini.

Ne vem če ti pomaga a na Linuxu lahko več informacij o procesorju dobiš z
cat /proc/cpuinfo

Na FreeBSD in Mac OS X nimaš procfs-ja, obstaja pa:
sysctl -a hw

Sanja se mi ne, če vračajo isti rezultat kot uname -a. Je pa en
predlog.

lp mk



Mojca Miklavec wrote:
> Živijo,
> 
> skrbim za distribucijo programov za več arhitektur. Z bash skripto (z
> ukazom "uname") ugotavljam arhitekturo sistema in na podlagi tega s
> spleta pretočim prave binarne datoteke. To deluje v 99% primerov,
> razen:
> - na bivšem strežniku (mislim, da je bil nek virtualen sistem) smo
> imeli dolgo časa težave, saj je "uname -m" vračal "x86_64", sam sistem
> pa ni podpiral poganjanja 64-bitnih programov (uname bi moral vračati
> i386). To je bil osamljen primer.
> - Mac OS X 10.6 privzeto vrača "i386", vendar na 64-bitnih procesorjih
> deluje v 64-bitnem načinu in gcc pretvarja izvorno kodo v 64-bitne
> programe. To je zelo razširjen problem.
> 
> Ali je mogoče zanesljivo izvedeti arhitekturo na kakšen drugačen način?
> 
> Recimo, da poženem program moja_arhitektura (ki sem ga sama napisala
> in prevedla) in me zanima, za kakšno arhitekturo je preveden. Obstaja
> kakšen način, da mi program to sam pove? Kako? Program seveda lahko
> izvede ukaz "uname -m", vendar mi to ne pomaga, saj lahko na 64-bitnem
> intelu brez težav prevajam programe za PowerPC in jih poganjam, pri
> čemer bi si želela, da bi mi program znal odgovoriti, za katero
> platformo je preveden.
> 
> Primer zanesljivega ukaza na Mac-u je npr.
>     > file moja_arhitektura
> ki vrne enega od spodnjih odgovorov:
>     moja_arhitektura: Mach-O executable i386
>     moja_arhitektura: Mach-O 64-bit executable x86_64
>     moja_arhitektura: Mach-O executable ppc
> Kako bi mi lahko program to povedal sam o sebi in na ostalih
> operacijskih sistemih?
> 
> (Spodaj je koda, ki jo trenutno uporabljam za prepoznavanje
> arhitektur, a ni 100% zanesljiva.)
> 
> Hvala,
>     Mojca
> 
> system=`uname -s`
> cpu=`uname -m`
> 
> case "$system" in
>   # linux
>   Linux)
>     case "$cpu" in
>       i*86) platform="linux" ;;
>       x86_64|ia64) platform="linux-64" ;;
>       ppc) platform="linux-ppc" ;;
>       *) platform="unknown" ;;
>     esac ;;
>   # Mac OS X
>   Darwin)
>     case "$cpu" in
>       i*86) platform="osx-intel" ;;
>       x86_64) platform="osx-64" ;;
>       ppc*|powerpc|power*|Power*) platform="osx-ppc" ;;
>       *) platform="unknown" ;;
>     esac ;;
>   # FreeBSD
>   FreeBSD|freebsd)
>     case "$cpu" in
>       i*86) platform="freebsd" ;;
>       x86_64) platform="freebsd" ;;
>       amd64) platform="freebsd-64" ;;
>       *) platform="unknown" ;;
>     esac ;;
> ...
> _______________________________________________
> lugos-list mailing list
> lugos-list na lugos.si
> http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list




More information about the lugos-list mailing list