如何判断Unix系统的一个库文件是32位还是64位的

某些时候,我们需要知道操作系统的位数,或者配置插件的时候需要知道主程序的位数(例如配置apache插件的时候需要知道apache的位数以便配置相应的插件),最简单的办法就是执行file命令,如:

file 命令

Linux:

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

AIX:

32位的没有说明

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

Solaris:

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

od 命令

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

Linux

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

  1. #od -h -N 10 32.so 
  2.       0000000 457f 464c 0101 0001 0000
  3. #od -h  -N 10  64.so 
  4.       0000000 457f 464c 0102 0001  0000

Solaris

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

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

AIX

32位是01df ;64位是01f7

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

HP Unix

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

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

原文发布时间:2015-04-17

本文来自云栖合作伙伴“linux中国”

如何判断Unix系统的一个库文件是32位还是64位的相关推荐

  1. Android系统判断CPU是32位还是64位

    Android系统判断CPU是32位还是64位 一.方法一,读取"/proc/cpuinfo"文件的第一行. 1.32bit 2.64bit 二.方法二,读取Android 的sy ...

  2. c语言程序判断32位还是64位,c++ 判断是64位还是32位系统的实例

    1.IsWow64Process 确定指定进程是否运行在64位操作系统的32环境(Wow64)下. 语法 BOOL WINAPI IsWow64Process( __in HANDLE hProces ...

  3. 编写程序创建一个通讯录文件,在其中存入10位同学的姓名、年龄、电话号码,并在屏幕上输出第2、4、6、8、10位同学的信息

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 8.编写程序创建一个通讯录文件,在其中存入10位同学的姓名.年龄.电话号码,并在屏幕上 ...

  4. Linux 系统如何查看文件是32位还是64位?

    在日常工作中,经常需要查看文件是32位还64位,下面一个命令可以查看: file filename

  5. 电脑系统32位和64位有哪些区别?32位和64位是什么意思 ?

    我们在安装系统的时候,需要了解的东西太多了,比如选择系统的话你首先要了解是选择32位还是64位系统呢?然后还需要判断电脑适合32位还是64位系统?这些问题要折腾清楚之后才能更好的进行安装,今天带大家了 ...

  6. 判断当前Windows XP操作系统是32位还是64位的方法

    昨天在调查怎样区分Windows XP32位和64位的问题,在网上找了一下,大家常用的有两种方法. 方法一.通过指针来判断. 在32位操作系统上指针长是4个字节,而在64位系统上指针为8个字节. 方法 ...

  7. 台式计算机32位和64位的区别,电脑系统32位和64位有哪些区别 32位和64位是什么意思 【详解】...

    我们在安装系统的时候,需要了解的东西太多了,比如选择系统的话你首先要了解是选择32位还是64位系统呢?然后还需要判断电脑适合32位还是64位系统?这些问题要折腾清楚之后才能更好的进行安装,今天小编带大 ...

  8. 判断oracle客户端是32还是64,64位-如何知道已安装的Oracle Client是32位还是64位?

    64位-如何知道已安装的Oracle Client是32位还是64位? 操作系统:Windows 2008 Server R2 Oracle客户端:11.2 非常感谢 8个解决方案 73 votes ...

  9. 编译并使用boost库(win7+boost1.63+vs2015+32位or 64位)

    博客 学院 下载 GitChat 论坛 问答 商城 VIP 活动 招聘 ITeye 码云 CSTO 写博客 发Chat 编译并使用boost库(win7+boost1.63+vs2015+32位or ...

最新文章

  1. socket 获取回传信息_Luat系列官方教程5:Socket代码详解
  2. python3网络爬虫(4):python3安装Scrapy
  3. css响应式网格布局生成器_如何使用网格布局模块使用纯CSS创建响应表
  4. windows系统c++多线程开发
  5. SSM框架笔记12:Spring JdbcTemplate
  6. mysql闩_Oracle闩:Cache Buffers chains
  7. Bailian2750 鸡兔同笼【入门】
  8. 【java笔记】自定义异常
  9. [最小生成树] 继续畅通工程
  10. 企业如何培养新型员工队伍
  11. FTP内网穿透 报错 200 227 451 注意事项
  12. Excel教程:这三个excel筛选技巧,你肯定没用过 -Excel入门
  13. org.apache.ibatis.builder.IncompleteElementException:Could not find result map cn.lyp.entity.Book
  14. 零基础GitHub入门教程
  15. wstmart不错。可以用用
  16. 手风琴几排簧好_手风琴三排簧和四排簧的区别
  17. 期货开户交易交易风格各异
  18. web应用测试的具体流程(等保测评相关)
  19. [转帖]Windows7/2008中批量删除隧道适配器的方法
  20. creo学习笔记:creo工程图转cad比例问题

热门文章

  1. 转:3d max 2013 安装教程,凭着一种互联网精神提供给广大朋友
  2. 可能 delphi7 下稳定的最后一版本 GDIPLUS
  3. android源代码
  4. 搭建Linux安全的Squid代理服务器
  5. WPF学习笔记 - 不一样的皇帝的新衣
  6. jquery css 定义背景不重复
  7. 一个想法不一定对 系列
  8. 201571030322/201571030319《小学生四则运算软件需求说明结对项目报告》
  9. django+celery+rabitmq
  10. spring源码分析的书到了