關於linux中so檔案的深入認識

2021-07-03 03:21:53 字數 467 閱讀 3771

1 【.so檔案】是什麼? 

2 【elf檔案格式】是什麼?

3 【mach-o檔案格式】是什麼?

「mach-o為mach object檔案格式的縮寫,它是一種用於可執行檔案,目標**,動態庫,核心轉儲的檔案格式。作為a.out格式的替代,mach-o提供了更強的擴充套件性,並提公升了符號表中資訊的訪問速度。mach-o曾經為大部分基於mach核心的作業系統所使用。nextstep,darwin和mac os x等系統使用這種格式作為其原生可執行檔案,庫和目標**的格式。

在linux環境下,/usr/include目錄下有elf.h檔案,會有針對elf檔案格式的結構體定義,在mac下,則有乙個對應的mac-o目錄,裡面也有類似的檔案。

mac下要檢視可執行檔案或者動態庫的一些資訊,就只能通過【otool】這樣的工具來進行,不如【readelf】這樣的熟悉和方便,另外mac也不用so這樣的名稱,而使用dylib,mac系統終究是**於bsd。

關於linux下的 a檔案與 so 檔案

描述問題 使用多執行緒pthread的時候,我用的ide,codebolcks 編譯後發現直接彈出視窗,程式還沒有被build。巴拉巴拉,然後陷入了這個迴圈。提示有一句pthead create未定義。發現 pthread要用到動態鏈結庫 libpthread.a 才能使用。解決辦法 後來在sett...

linux 中的 so和 a檔案

下面是關於.so的介紹 一 引言 通常情況下,對函式庫的鏈結是放在編譯時期 compile time 完成的。所有相關的物件檔案 object file 與牽涉到的函式庫 library 被鏈結合成乙個可執行檔案 executable file 程式在執行時,與函式庫再無瓜葛,因為所有需要的函式已拷...

linux中執行找不到 so檔案

如果使用自己手動生成的動態鏈結庫.so檔案,但是這個.so檔案,沒有加入庫檔案搜尋路勁中,程式執行時可能會出現找不到動態鏈結庫的情形。其中的libjson linux gcc 4.6 libmt.so cannot found。解決這個問題 1 在系統中查詢這個檔案 當然要保證系統中已經有這個.so...