連結器與載入器與執行檔格式

關於連結器所進行的符號解析,下列說明何者正確?

  1. A將某檔案中使用的函式或變數名稱,對應到另一個檔案中的該定義
  2. B將原始碼的變數名稱換成較短的名稱,使其難以閱讀
  3. C將含有數學符號的算式重新計算成數值
查看答案與解析

正確答案:A. 將某檔案中使用的函式或變數名稱,對應到另一個檔案中的該定義

若在main.c中呼叫sum函式,並在sum.c中定義其內容,則main.o會記錄「參照sum」,sum.o會記錄「定義sum」。連結器會蒐集所有目的檔的符號表,為每個參照找出一個對應的定義。若找不到定義,就會出現「未定義的參照」錯誤;若有兩個以上,則會出現「重複定義」錯誤。

  • A. 正確。將參照與定義連結起來。
  • B. 那是混淆(obfuscation),不是連結器的工作。
  • C. 符號指的是函式或變數的名稱。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. 關於連結器所進行的重定位(relocation),下列說明何者正確?
  2. 連結C語言程式時出現「undefined reference to `foo'」(對foo的未定義參照)錯誤,最可能的原因為下列何者?
  3. 在a.c與b.c中都定義了未加static、同名的全域函式void init(void),然後進行連結。下列關於會發生之情形的敘述,何者正確?
  4. 在C語言中以static定義函式時(例:static int helper(void)),下列關於其效果的敘述何者正確?
  5. 在C語言中寫下「extern int count;」時,下列關於其意義的敘述何者正確?

這個領域的比較