linux architecture,当dpkg-architecture不存在时,如何区分linux上的mips cpu类型?

短的问题:我怎么能可靠地在任何Linux发行MIPS,mipsel体系,MIPS64和mips64el区分?当dpkg-architecture不存在时,如何区分linux上的mips cpu类型?

更详细的解释:

我们提供静态内置/分配独立的二进制文件(特)许多体系。安装脚本通常运行uname -s和uname -m来确定操作系统和体系结构。根据该决定从服务器获取二进制文件,因此它需要可靠地工作。它确实如此。除了Mac OS X 10.6和Debian外,几乎在任何地方。 Mac会在运行64位应用程序的操作系统上报告i386,而对于32位操作系统,Debian报告mips64。

的Debian上MIPS64正确报告处理器类型,但是这并不能帮助我至少有两个方面的原因:

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

它以小端模式运行。 Debian称mipsel,而不是mips。它通常可以切换,但操作系统只能在一种模式下运行,并且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的架构将是完美的任务,但它不存在于其他Linux发行版。

命令

getconf LONG_BIT

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

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

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

2011-08-18

Mojca

+0

什么毛病我下面提供的答案吗?请接受它,如果没有。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值