首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言中 .o 與 .a 檔案的區別

     編輯:C 語言問答

目標檔與靜態庫的關係

副檔名全名內容產生階段Windows 對應
.oObject file (目標檔)編譯器產生的機器碼,含符號表、重定位資訊編譯階段 (-c).obj
.aArchive (靜態庫)多個 .o 打包的歸檔檔,含索引表連結前 (ar).lib

典型建構流程

# 1. 編譯原始檔為目標檔
gcc -c foo.c -o foo.o
gcc -c bar.c -o bar.o

# 2. 打包為靜態庫
ar rcs libmylib.a foo.o bar.o

# 3. 連結使用
gcc main.c -L. -lmylib -o app

關鍵點

  • .o 可單獨連結,.a 方便管理大量模組。
  • 靜態庫連結時,連結器僅提取被引用的 .o 區段,未引用部分不納入最終執行檔。
  • Windows 下 .lib 可能同時包含靜態庫與 DLL 匯入庫,需注意區分。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved