动态确定linux操作系统体系结构
是否有一种方法可以动态了解Linux体系结构,无论是动态确定linux操作系统体系结构,linux,unix,architecture,Linux,Unix,Architecture,是否有一种方法可以动态了解Linux体系结构,无论是x86-64还是x86?谷歌是你的朋友: 您要测试宏\uuuuu amd64\uuuuuu和\uuuuuuuui386\uuuuuuu。理想情况下,您根本不测试宏,而是编写正确的可移植代码。谷歌是您的朋友: 您要测试宏\uuuuu amd64\uuuuuu和\uuuuuuuui386\uuuuuuu。理想情况下,您根本不需要测试宏,而是编写正确的可移植代码。Posix标准函数(在系统调用中实现)动态地为您提供有关CPU的信息。您可能需要机器字段
x86-64
还是x86
?谷歌是你的朋友:
您要测试宏\uuuuu amd64\uuuuuu
和\uuuuuuuui386\uuuuuuu
。理想情况下,您根本不测试宏,而是编写正确的可移植代码。谷歌是您的朋友:
您要测试宏\uuuuu amd64\uuuuuu
和\uuuuuuuui386\uuuuuuu
。理想情况下,您根本不需要测试宏,而是编写正确的可移植代码。Posix标准函数(在系统调用中实现)动态地为您提供有关CPU的信息。您可能需要机器
字段
小心运行32位程序的x86-64内核(例如,64位Debian中的32位Debian发行版chroot
-ed,或者可能是运行在64位系统上的32位ELF二进制文件);我不知道他们在那种情况下会付出什么;在这种情况下,我可以想象一些x86_64
,因为内核并不真正了解系统的二进制文件和libc
另请参阅Linux特定的系统调用。Posix标准函数(在系统调用中实现)动态地为您提供有关CPU的信息。您可能需要机器
字段
小心运行32位程序的x86-64内核(例如,64位Debian中的32位Debian发行版chroot
-ed,或者可能是运行在64位系统上的32位ELF二进制文件);我不知道他们在那种情况下会付出什么;在这种情况下,我可以想象一些x86_64
,因为内核并不真正了解系统的二进制文件和libc
另请参阅Linux特定的系统调用。您可以使用lscpu命令列出有关CPU的特征。您可以使用lscpu命令列出有关CPU的特征。对不起,我忘了说,它应该是动态的。为什么?查找32位二进制文件在哪个内核上运行?当然,它不是x86-64二进制文件的动态属性。阅读
man2uname
。对不起,我忘了说,它应该是动态的。为什么?查找32位二进制文件在哪个内核上运行?当然,它不是x86-64二进制文件的动态属性。阅读man 2 uname
。你到底问什么?你们应该试着编写可移植的代码……CPU、操作系统或你们的应用程序的体系结构?因为你可以在64位Linux上同时运行32位和64位应用程序。你到底为什么问这个问题?你们应该试着编写可移植的代码……CPU、操作系统或你们的应用程序的体系结构?因为您可以在64位Linux上同时运行32位和64位应用程序。我的意思是,例如,64位Linux内核上的Debian 32位发行版(例如,Debian 64位发行版中的chroot
-ed)。事实上,这些奇怪的情况(x86-64内核上的x86 ELF)是动态调用uname的唯一原因。理想情况下,检查更通用的宏或启发式(如_LP64)以检测SPARC、POWER等上的32/64。个性+1(2)。以前从没见过。更多信息请参见setarch(8),其中确认PER_LINUX32偷偷摸摸地导致uname撒谎!我指的是64位Linux内核上的Debian 32位发行版(例如Debian 64位发行版中的chroot
-ed)。事实上,这些奇怪的情况(x86-64内核上的x86 ELF)是动态调用uname的唯一原因。理想情况下,检查更通用的宏或启发式(如_LP64)以检测SPARC、POWER等上的32/64。个性+1(2)。以前从没见过。更多信息请参见setarch(8),其中确认PER_LINUX32偷偷摸摸地导致uname撒谎!运行单个uname(2)
syscall而不是popen
(或者许多等效的系统调用:pipe
,dup2
,fork
,execve
),可能更简单。运行单个uname(2)
syscall而不是popen
(或许多等效的系统调用:pipe
,dup2
,fork
,execve
)。