| 擴展名 | 類型 | 說明 | 對應 Windows |
|---|---|---|---|
| .o | 目標文件 | 編譯產出,未鏈接 | .obj |
| .a | 靜態庫 | 多個 .o 打包,編譯時鏈接進可執行文件 | .lib |
| .so | 共享庫/動態庫 | 運行時動態加載,多進程共享內存 | .dll |
| .la | libtool 存檔 | 文本配置文件,記錄庫依賴與安裝路徑 | 無直接對應 |
| .ko | 內核模組 | Linux 內核動態加載模塊 | .sys |
gcc -c test.c # 生成 test.o
ar -r libtest.a test1.o test2.o
gcc -Wall -fPIC -shared test1.c test2.c -o libtest.so
-fPIC:位置無關代碼,動態庫必須-shared:生成共享庫gcc -Wall -fPIC -shared -L. test3.c -ltest -o libtest.so
libtool --mode=link gcc -o libmylib.la -rpath /usr/lib test1.lo test2.lo
.la 文件內容為文本,可 cat libmylib.la 查看依賴庫路徑、版本資訊。
gcc -static -o app main.c -ltestLD_LIBRARY_PATH、/etc/ld.so.conf、/lib、/usr/libldconfig 更新緩存ldd /path/to/executable # 可執行文件依賴
objdump -p libtest.so | grep NEEDED # 動態庫聲明依賴