Déterminer dynamicment l’architecture Linux OS

Y a-t-il un moyen de connaître dynamicment l’architecture Linux, que ce soit x86-64 ou x86 ?

La fonction standard Uname de Posix (implémentée dans le syscall uname (2)) vous fournit dynamicment les informations sur le CPU. Vous voulez probablement le champ machine .

Attention aux kernelx x86-64 exécutant un programme 32 bits (par exemple une dissortingbution Debian 32 bits dans un Debian 64 bits, ou peut-être un binary ELF 32 bits fonctionnant sur un système 64 bits); Je n’ai aucune idée de ce qu’ils donnent dans cette situation; J’imagine un peu x86_64 dans ce cas, puisque le kernel ne connaît pas vraiment les binarys et la libc du système.

Voir aussi le syscall de personnalité spécifique à Linux (2) .

Google est votre ami: http://sourceforge.net/p/predef/wiki/Architectures/

Vous voulez tester les macros __amd64__ et __i386__ . Idéalement, vous ne testez pas du tout les macros et écrivez du code portable correct.

Vous pouvez utiliser la commande lscpu pour répertorier les caractéristiques du processeur.