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 > [email protected] > http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list _______________________________________________ lugos-list mailing list [email protected] http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list
