11 在Unix/Linux系統中,什麼選項用來指定要製作成動態庫存?
(A) -static
(B) -shared
(C) -dynamic
(D) -library
答案:登入後查看
統計: A(0), B(3), C(2), D(3), E(0) #3399858
統計: A(0), B(3), C(2), D(3), E(0) #3399858
詳解 (共 2 筆)
#7318709
【第一步:找關鍵字】
關鍵字:
-
Unix/Linux
-
動態庫存(shared library)
-
選項(compiler/linker option)
? 核心考點就是:
建立「動態函式庫」要用哪個參數?
【第二步:白話翻譯】
這題在問:
? 「如果你要把程式做成『可以被其他程式共用的函式庫(.so)』,要用哪個指令選項?」
【第三步:解題思路】
這題在考什麼觀念?
? 靜態庫(.a) vs 動態庫(.so) 的建立方式
解題步驟
-
先知道兩種 library:
-
靜態庫(static library, .a)
-
動態庫(shared library, .so)
-
-
記住建立動態庫的關鍵參數
→ -shared -
對照選項找答案
原理與規則(生活比喻)
想像:
-
靜態庫=每個人都影印一份資料(浪費空間)
-
動態庫=大家共用一份資料(省空間)
? 要做「共用版本」
? 就要用 -shared
【第四步:選項分析】
(A) 為什麼錯?
✘ 錯
-static 是用來:
? 建立或使用「靜態連結」
不是動態庫
(B) 為什麼對?
✔ 正確(本題答案)
? -shared 是:
建立動態函式庫(.so)的標準選項
例如:
ㅤㅤ
gcc -shared -o libtest.so test.o
ㅤㅤ
(C) 為什麼錯?
✘ 錯
-dynamic 不是標準用來「建立動態庫」的選項
? 有些系統可能出現,但不是考試標準答案
(D) 為什麼錯?
✘ 錯
-library 不是常見或標準的編譯選項
【觀念補充與延伸】
核心觀念定位
? 系統程式 / Linux 編譯
? 常考指令型題目
法條或定義
-
動態庫(Shared Library):
在執行時才載入,供多個程式共用的函式庫(通常為 .so)
常見指令整理
建立動態庫:
ㅤㅤ
gcc -shared -o libxxx.so xxx.o
ㅤㅤ
使用動態庫:
ㅤㅤ
gcc main.c -lxxx
ㅤㅤ
觸類旁通(舉一反三)
對比概念
| 類型 | 副檔名 | 特性 |
|---|---|---|
| 靜態庫 | .a | 編譯時整合 |
| 動態庫 | .so | 執行時載入 |
變化題型
-
問:哪個選項是靜態連結?
? -static
【記憶口訣】
? 「shared 就是共享 → 動態庫」
【常見陷阱】
學生最容易搞混的地方
把 static 和 shared 搞反
心理盲點
看到 dynamic 就以為是答案
避坑指南
? 記一句話:
-
動態庫 → shared
-
靜態庫 → static
0
0