Se você estiver compilando na própria máquina de destino, uname -m
fornecerá o que você deseja na maioria das máquinas. por exemplo. na minha máquina desktop de 64 bits:
$ uname -m
x86_64
Isto não lhe dirá explicitamente se a máquina é de 64 ou 32 bits. É apenas uma string que você terá que interpretar (por exemplo, com uma série de instruções if/then
ou uma instrução case
).
Aqui está um exemplo (muito bruto) em sh:
machine=$(uname -m)
bits=0
case "$machine" in
*64*) bits=64 ;;
*[3-6]86*) bits=32 ;;
*armv7*) bits=32 ;; # replace with a pattern to match your 32-bit android cpu
*armv8*) bits=64 ;; # replace with a pattern to match your 64-bit android cpu
esac
[ "$bits" = 0 ] && echo "Unknown machine type" && exit 1