判断Unix系统及库文件是32位还是64位的详解

判断Unix系统及库文件是32位还是64位的详解

一、查看系统32还是64位系统

bootinfo -y    查看硬件位数
bootinfo -K   查看内核位数

二、查看库文件是32位还是64位

1、使用file命令

Linux:

# file libnss1_files-2.2.4.so
libnss1_files-2.2.4.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped
# file libtrsbean.so
libtrsbean.so: ELF 64-bit LSB shared object, version 1, not stripped

AIX:32位的没有说明

#file /usr/ccs/lib/mcrt0.o
/usr/ccs/lib/mcrt0.o:  executable (RISC System/6000) or object module not stripped
#file /usr/ccs/lib/mcrt0_64.o
/usr/ccs/lib/mcrt0_64.o:    64-bit XCOFF executable or object module not stripped

Solaris:

# file libmp.so
libmp.so:    ELF 32-位 MSB 动态库 SPARC 版本 1,动态链接,没有除去

2、通过二进制查看命令od查看相关的库文件也可以解决此问题,但难度大,也不保险。下面给出在不同系统中的结果,以供参考(由于只在某一版本的操作系统下面做的测试,下面的结果不可能适应所有的所有版本的系统)

Linux


32位第4段是0101;64位第4段是0102  
 -h 表示按16进制2字节整数查看,整数高低位也调整了(如7f45变成457f); -N 10 表示查看10个字节
#od -h -N 10 32.so
   0000000 457f 464c 0101 0001 0000
#od -h -N 10 64.so
   0000000 457f 464c 0102 0001 0000

Solaris

和Linux差不多,只是Linux的 -h 参数变成 -x。另外显示结果也不太一样,Solaris是按照字节顺序显示的,Linux是按照16进制2字节整数查看,会把高低位调整了。

#od -x -N 10 32.so
   0000000 7f45 4c46 0101 0100 0000
#od -x -N 10 64.so
   0000000 7f45 4c46 0102 0100 0000

AIX

32位是01df ;64位是01f7

#od -N 10 -h crt0_r.o
   0000000 01df 0003 3d65 462a 0000
#od -N 10 -h mcrt0_64.o
   0000000 01f7 0003 3fe2 7fd5 0000

 HP Unix

没有实际操作,只是通过UltraEdit打开两个文件xxx32.sl和xxx64.sl并比较前面几个字节(惠普库文件是.sl结尾不是.so结尾的)。发现64位的文件和Linux/Solaris的类似。

02 10 01 0e 05 12 40
7f 45 4c 46 02 02 01

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 使用IPython下的Net-SNMP来管理类UNIX系统的教程

    引言 对于简单网络管理协议 (SNMP),大多数系统管理员都具有一定的使用经验,或者至少听说过它.如果您正在一个数据中心工作,那么您每天都可能采用某种方式与 SNMP 进行交互.有许多给人印象深刻的.同等规模的网络管理系统 (NMS) 或者网络监视系统使用了 SNMP 监视,但本文并不打算介绍这些系统.本文主要涉及的是通过 Python? 语言来研究 SNMP,并亲自编写相关的代码. 一位朋友最近告诉我,有时候遇到的情况就像:只是希望沿着街道一路走到奶奶家,而不需要乘坐像 Saturn V 火箭

  • UNIX系统上实现拨号

    我们假设你已经连接上系统并且处于外壳环境. 1.我们首先需要找到L-devices文件,它应该在usr/lib/uucp目录下,但是为防止万一它被隐藏了,输入命令: find / -name L-devices -print 将让你能找到它.如果你找不到,也别着急,因为只要经过反复的实验,我们一定能找到它. 2.如果你找到L-devices文件,我们需要把它显示出来,输入命令: cat L-devices 如果它超出一屏,则输入命令: cat L-devices | more 这将可以显示下一个

  • 使用Python编写类UNIX系统的命令行工具的教程

    引言 您是否能编写命令行工具?也许您可以,但您能编写出真正好用的命令行工具吗?本文讨论使用 Python 来创建一个强健的命令行工具,并带有内置的帮助菜单.错误处理和选项处理.由于一些奇怪的原因,很多人并不了解 Python? 的标准库具有制作功能极其强大的 *NIX 命令行工具所需的全部工具. 可以这样说,Python 是制作 *NIX 命令行工具的最佳语言,因为它依照"batteries-included"的哲学方式工作,并且强调提供可读性高的代码.但仅作为提醒,当您发现使用 Py

  • 怎样在UNIX系统下安装php3

    # cd /usr/src # tar xvzf apache_1.3.6.tar.gz   (产生apache_1.3.6目录) # tar xvzf php-3.0.8.tar.gz    (产生php-3.0.8目录) # cd apache_1.3.6 # ./configure --prefix=/usr/local/apache  (把Apache的安装目录定为 /usr/local/apache) # cd php-3.0.8 # ./configure --with-mysql=

  • 在类Unix系统上开始Python3编程入门

    假设有个python脚本script.py,不管哪种Unix平台,都可以在命令行上通过解释器执行: $ python script.py Unix平台还可以在不明确指定python解释器的情况下,自动执行python解释器,这需要在python脚本的第一行添加如下shell魔术字符串: #!/usr/bin/python 在#!之后写上python解释器的完整路径,通常在/usr/bin或/usr/local/bin目录下.还有一种方法是使用env这个命令,位于/bin或/usr/bin中,它会

  • 怎样在UNIX系统下安装MySQL

    # cd /usr/src   # tar -zvxf mysql-3.22.25-pc-linux-gnu-i686.tar.gz (产生 mysql-3.22.25-pc-linux-gnu-i686目录) # cd mysql-3.22.25-pc-linux-gnu-i686 # ./configure --prefix=/usr/local/mysql (其中参数设定目的安装路径) # make # make install   注意在运行configure时,设定MySQL的安装目的

  • 判断Unix系统及库文件是32位还是64位的详解

    判断Unix系统及库文件是32位还是64位的详解 一.查看系统32还是64位系统 bootinfo -y    查看硬件位数 bootinfo -K   查看内核位数 二.查看库文件是32位还是64位 1.使用file命令 Linux: # file libnss1_files-2.2.4.so libnss1_files-2.2.4.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped # file lib

  • python判断windows系统是32位还是64位的方法

    本文实例讲述了python判断windows系统是32位还是64位的方法.分享给大家供大家参考.具体分析如下: 通常64的windows系统program files文件夹(用来安装应用程序的默认的默认的目录),有2个,一个是program files另外一个是program files(x86), 而32bit的只有program files这一个文件夹. 根据上面这一特点,我们就可以判断windows系统是32还是64位的. import os prg = 'C:Program Files(

  • C#判断系统是32位还是64位的方法

    本文实例讲述了C#判断系统是32位还是64位的方法.分享给大家供大家参考.具体如下: public static int GetOSBit() { try { string addressWidth = String.Empty; ConnectionOptions mConnOption = new ConnectionOptions(); ManagementScope mMs = new ManagementScope(@"\\localhost", mConnOption);

  • bat命令批处理判断32位还是64位系统的多种方法

    第一种代码:通过 %PROCESSOR_ARCHITECTURE% 可以通过cmd中 通过echo %PROCESSOR_ARCHITECTURE% if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86 if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64 exit :x64 explorer.exe http://www.baidu.com/ e

  • C#判断DLL文件是32位还是64位的示例代码

    c#判断dll文件是32位还是64位,实例代码如下所示: using System; using System.IO; namespace GetDllVersionDemo { /// <summary> /// https://www.cnblogs.com/LifeDecidesHappiness/p/15711169.html /// C#判断DLL文件是32位还是64位 /// LDH @ 2021-12-20 /// </summary> internal class

  • 在双硬盘上安装独立32位和64位双系统

    现在的64位操作系统还没有中文版,加之受兼容性问题的影响,组建独立多系统显然已成为最佳的解决方案.很多朋友在配置64位硬件平台时已购入了SATA硬盘,但同时拥有SATA和PATA硬盘的朋友也不在少数,下面就来说明怎样在这两块硬盘上构建32位和64位Windows XP的独立双系统. 一.设置SATA硬盘 说明:本次用于试验的硬盘为: PATA接口的希捷40GB和SATA接口的希捷80GB硬盘各一块.怎样设置SATA硬盘,由主板决定,本文以硕泰克SL-K8AV2-R1L主板上的设置方法为例.各位朋

  • 查看Linux系统是32位还是64位的方法总结

    方法1:getconf LONG_BIT 查看 如下例子所示: 32位Linux系统显示32, 64位Linux系统显示64.最简单.快捷的方法. [root@DB-Server ~]# getconf LONG_BIT 32 [root@gettestlnx01 ~]# getconf LONG_BIT 64  方法2:uname命令查看 如下例子所示,x86_64表示64位系统, i686 i386表示32位系统.i686 只是i386的一个子集,支持的cpu从Pentium 2 (686)

  • python3中datetime库,time库以及pandas中的时间函数区别与详解

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Services中,换句话说, 它提供的功能是更加接近于操作系统层面的.通读文档可知,time 模块是围绕着 Unix Timestamp 进行的. 该模块主要包括一个类 struct_time,另外其他几个函数及相关常量. 需要注意的是在该模块中的大多数函数是调用了所在平台C library的同名函数, 所以

  • Golang实现文件夹的创建与删除的方法详解

    目录 创建文件夹 删除文件和文件夹 小结 学习笔记,写到哪是哪. 接着上一篇对纯文本文件读写操作,主要去实现一些文件夹操作. 创建文件夹 创建文件夹的时候往往要先判断文件夹是否存在. 样例代码如下 package main import ( "bufio" "fmt" "io" "os" ) //判断文件夹是否存在 func HasDir(path string) (bool, error) { _, _err := os.S

  • PHP和MySql中32位和64位的整形范围是多少

    一个字节有8位,所以32位int型占用32位/8位=4个字节,64位int型占用64位/8位=8个字节. 32位,64位无符号整型最大值: 2^64-1 = 18446744073709551615 2^32-1 = 4294967295 32位,64位有符号整型最大值: (2^32)/2-1 = 2147483647 (2^64)/2-1 = 9223372036854775807 减1是因为整型包括0. 64位Ubuntu 14.04,PHP_INT_MAX的值为92233720368547

随机推荐