[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