如何判斷Unix系統的一個庫檔案是32位還是64位的
某些時候,我們需要知道作業系統的位數,或者配置外掛的時候需要知道主程式的位數(例如配置apache外掛的時候需要知道apache的位數以便配置相應的外掛)。
最簡單的辦法就是執行file命令,如:
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,動態連結,沒有除去
od 命令
另外通過二進位制檢視命令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並比較前面幾個位元組(HP庫檔案是.sl結尾不是.so結尾的)。發現64位的檔案和Linux/Solaris的類似。
02 10 01 0e 05 12 40 7f 45 4c 46 02 02 01
相關文章
- 判斷是蘋果系統還是安卓系統的代蘋果安卓
- js如何判斷一個方法是內建的還是自定義的JS
- js如何判斷一個變數是物件還是nullJS變數物件Null
- js如何判斷一個變數是陣列還是其他物件JS變數陣列物件
- 判斷Android 系統是MIUI 的,魅族的Flyme ,還是原生的?AndroidUI
- JavaScript判斷ios還是android系統JavaScriptiOSAndroid
- js如何判斷一個變數是數字還是數字字串JS變數字串
- 判斷是android安卓還是ios蘋果系統的js程式碼Android安卓iOS蘋果JS
- jquery判斷一個元素是隱藏還是顯示jQuery
- php判斷檔案存在是用file_exists還是is_filePHP
- JDK是如何判斷兩個物件是否相同的?判斷的流程是什麼?JDK物件
- shell檢測檔案是windows格式還是unixWindows
- js如何判斷物件的屬性值是物件還是陣列JS物件陣列
- 怎麼判斷Win10系統中硬碟是SSD還是HDDWin10硬碟
- 筆記: 判斷lib庫是動態庫還是靜態庫筆記
- REDHAT中如何判斷主機的CPU是32位還是64位的Redhat
- js如何判斷屬性是本身具有還是繼承別人的JS繼承
- 如何確定一個dmp檔案是exp匯出的還是expdp匯出的?
- 【ASK_ORACLE】一眼判斷出Oracle的dmp檔案是用expdp匯出還是exp匯出Oracle
- python如何判斷一個物件是否是列表Python物件
- js如何判斷一個變數是否是undefinedJS變數Undefined
- javascript如何判斷一個變數是否是undefinedJavaScript變數Undefined
- 如何判斷是手機還是電腦訪問網站網站
- 如何判斷一個類是從另一個類繼承繼承
- js如何判斷一個變數是否是一個數字JS變數
- 判斷檔案為文字檔案還是二進位制檔案(C語言實現)C語言
- 關於LINUX FILE命令是如何判斷檔案字符集的Linux
- python如何判斷一個數是否是整數Python
- 如何判斷一個場景是否是物聯網?
- js如何判斷一個引數是否是陣列JS陣列
- javascript如何判斷一個變數是否是整數JavaScript變數
- js判斷一個函式是內建還是自定義程式碼例項JS函式
- 如何判斷使用者用的是Android手機還是IOS手機AndroidiOS
- JavaScript判斷陣列還是物件JavaScript陣列物件
- PHP判斷是手機端還是PC端PHP
- Android app 判斷是手機還是平板AndroidAPP
- Linux 中 7 個判斷檔案系統型別的方法Linux型別
- JAVA關於判斷年份是閏年還是平年的問題Java