天天看点

mips 内存 linux,linux - 当dpkg-architecture不存在时,如何区分linux上的mips cpu类型? - 堆栈内存溢出...

, , and on any linux distribution? 简短的问题:如何在任何Linux发行上可靠地区分 , , 和 ?

更长的解释:

我们为许多架构提供静态构建/分发独立二进制文件(用于TeX)。 安装脚本通常运行uname -s和uname -m来确定操作系统和体系结构。 然后根据该决定从服务器获取二进制文件,因此它需要可靠地工作。 确实如此。 几乎除了Mac OS X 10.6和Debian之外的所有地方。 on OS that runs 64-bit applications, while Debian reports for 32-bit OS. Mac将在运行64位应用程序的操作系统上报告 ,而Debian报告用于32位操作系统。

correctly reports processor type, but that doesn't help me for at least two reasons: Debian正确报告处理器类型,但这至少有两个原因对我没有帮助:

操作系统是32位,而不是名称可能暗示的64位。

它以little-endian模式运行。 , not . Debian称之为 ,而不是 。 它通常可以切换,但操作系统只能在一种模式下运行,而mips软件通常与mipsel不兼容。

以下是系统命令的一些输出:

$ file my_binary_name

my_binary_name: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x1040000, stripped

$ dpkg-architecture

DEB_BUILD_ARCH=mipsel

DEB_BUILD_ARCH_OS=linux

DEB_BUILD_ARCH_CPU=mipsel

DEB_BUILD_ARCH_BITS=32

DEB_BUILD_ARCH_ENDIAN=little

DEB_BUILD_GNU_CPU=mipsel

DEB_BUILD_GNU_SYSTEM=linux-gnu

DEB_BUILD_GNU_TYPE=mipsel-linux-gnu

DEB_HOST_ARCH=mipsel

...

dpkg-architecture对于该任务来说是完美的,除了它在其他Linux发行版中不存在。

命令

getconf LONG_BIT

在我的系统上正确报告32。

但是,我如何确定它是大端还是小端?

我发现config.guess可以确定差异,但它通过运行最终用户计算机上可能不存在的编译器来实现。 instead of . 除此之外,config.guess完全忽略了操作系统在32位模式下工作并错误地报告而不是 。