当dpkg-architecture不存在时,如何区分linux上的mips cpu类型?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了当dpkg-architecture不存在时,如何区分linux上的mips cpu类型?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2298字,纯文字阅读大概需要4分钟。
内容图文
简短的问题:如何在任何Linux发行版上可靠地区分mips,mipsel,mips64和mips64el?
更长的解释:
我们为许多架构提供静态构建/分发独立二进制文件(用于TeX).安装脚本通常运行uname -s和uname -m来确定操作系统和体系结构.然后根据该决定从服务器获取二进制文件,因此它需要可靠地工作.确实如此.几乎除了Mac OS X 10.6和Debian之外的所有地方. Mac将在运行64位应用程序的操作系统上报告i386,而Debian报告mips64用于32位操作系统.
mips64上的Debian正确报告处理器类型,但这至少有两个原因对我没有帮助:
>操作系统是32位,而不是名称可能暗示的64位.
>它以little-endian模式运行. 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-architecture对于该任务来说是完美的,除了它在其他Linux发行版中不存在.
第一个问题已在此处解决:How to determine whether a given Linux is 32 bit or 64 bit?
命令
getconf LONG_BIT
在我的系统上正确报告32.
但是,我如何确定它是大端还是小端?
我发现config.guess可以确定差异,但它通过运行最终用户计算机上可能不存在的编译器来实现.除此之外,config.guess完全忽略了操作系统在32位模式下工作并错误地报告mips64el而不是mipsel的事实.
解决方法:
file命令告诉你:
$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
那里的LSB代表最不重要的字节,意味着小端.给定big-endian二进制文件的文件输出将是MSB,最重要的字节.
请注意,MIPS有3个ABI(实际上更多),其中一个是n32. n32具有本机64位整数,但只有32位指针(并且需要64位内核).
对于n32二进制文件仍将报告32位:
ELF 32-bit LSB executable, MIPS, N32 MIPS-III version 1 (SYSV)
o32(debian使用的):
ELF 32-bit LSB executable, MIPS, MIPS-III version 1 (SYSV)
N64:
ELF 64-bit LSB executable, MIPS, MIPS-III version 1 (SYSV)
内容总结
以上是互联网集市为您收集整理的当dpkg-architecture不存在时,如何区分linux上的mips cpu类型?全部内容,希望文章能够帮你解决当dpkg-architecture不存在时,如何区分linux上的mips cpu类型?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。