Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态确定linux操作系统体系结构_Linux_Unix_Architecture - Fatal编程技术网

动态确定linux操作系统体系结构

动态确定linux操作系统体系结构,linux,unix,architecture,Linux,Unix,Architecture,是否有一种方法可以动态了解Linux体系结构,无论是x86-64还是x86?谷歌是你的朋友: 您要测试宏\uuuuu amd64\uuuuuu和\uuuuuuuui386\uuuuuuu。理想情况下,您根本不测试宏,而是编写正确的可移植代码。谷歌是您的朋友: 您要测试宏\uuuuu amd64\uuuuuu和\uuuuuuuui386\uuuuuuu。理想情况下,您根本不需要测试宏,而是编写正确的可移植代码。Posix标准函数(在系统调用中实现)动态地为您提供有关CPU的信息。您可能需要机器字段

是否有一种方法可以动态了解Linux体系结构,无论是
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
)。