1.以下是鏈接過程中對符號定義的判斷,其中錯誤的是( )。
A.全局變量聲明“int x, y;”中,x和y都是符號的定義
B.靜態局部變量聲明“static int x=\*xp;”中,x是符號的定義
C.全局變量聲明“int *xp=&x;”中,xp和x都是符號的定義
D.函數內的局部變量聲明“short x=200;”中,x不是符號的定義
B.靜態局部變量聲明“static int x=\*xp;”中,x是符號的定義
C.全局變量聲明“int *xp=&x;”中,xp和x都是符號的定義
D.函數內的局部變量聲明“short x=200;”中,x不是符號的定義
2.若x為局部變量,xp、y和z是全局變量,則以下判斷中錯誤的是( )。
A.賦值語句“int y=x+z;”中,y和z都是符號的引用
B.賦值語句“y=x+\*xp;”中,y和xp都是符號的引用
C.靜態局部變量聲明“static int x=*xp;”中,xp是符號的引用
D.賦值語句“y=x+z;”中,y和z都是符號的引用
B.賦值語句“y=x+\*xp;”中,y和xp都是符號的引用
C.靜態局部變量聲明“static int x=*xp;”中,xp是符號的引用
D.賦值語句“y=x+z;”中,y和z都是符號的引用
3.以下有關ELF目標文件的符號表的敘述中,錯誤的是( )。
A.可重定位和可執行兩種目標文件中都有符號表且數據結構一樣
B.符號表定義在.symtab節中,每個表項描述某個符號的相應信息
C.符號表中包含了所有定義符號的描述信息,包括局部變量的相關信息
D.通過符號表可獲得符號的名稱、所在節及在節中偏移地址和長度
B.符號表定義在.symtab節中,每個表項描述某個符號的相應信息
C.符號表中包含了所有定義符號的描述信息,包括局部變量的相關信息
D.通過符號表可獲得符號的名稱、所在節及在節中偏移地址和長度
4.以下是有關鏈接過程中符號解析(符號綁定)的敘述,其中錯誤的是( )。
A.全局符號(包括外部全局符號)需將模塊內的引用與模塊外的定義符號綁定
B.同一個符號名可能在多個模塊中有定義,每個定義處的符號都須分配空間
C.符號解析的目的是將符號引用與某目標模塊中定義的符號建立關聯
D.本地符號的解析比較簡單,只要與本模塊內定義的符號關聯即可
B.同一個符號名可能在多個模塊中有定義,每個定義處的符號都須分配空間
C.符號解析的目的是將符號引用與某目標模塊中定義的符號建立關聯
D.本地符號的解析比較簡單,只要與本模塊內定義的符號關聯即可
5.以下有關強符號和弱符號的符號解析的敘述中,錯誤的是( )。
A.一個符號名可以有一個強符號和多個弱符號,強符號為其定義
B.一個符號名只能有一個強符號,否則符號解析失敗
C.一個符號名可以僅出現在引用處或僅出現在定義處
D.一個符號名可以有多個弱符號,任選一個為其定義
B.一個符號名只能有一個強符號,否則符號解析失敗
C.一個符號名可以僅出現在引用處或僅出現在定義處
D.一個符號名可以有多個弱符號,任選一個為其定義
6.以下是兩個源程序文件:
|
|
A.因為出現了兩個強符號main,所以會發生鏈接錯誤
B.在m1中,定義了一個強符號main和一個弱符號p1
C.在m1中,對m2中定義的強符號p1的引用只有一處
D.在m2中,定義了一個強符號p1和一個局部符號main
B.在m1中,定義了一個強符號main和一個弱符號p1
C.在m1中,對m2中定義的強符號p1的引用只有一處
D.在m2中,定義了一個強符號p1和一個局部符號main
7.以下是兩個源程序文件:
|
|
對於上述兩個源程序文件鏈接時的符號解析,錯誤的是( )。
A.在模塊m1的所有語句中,對符號p1的引用一共有三處
B.在m1中,定義了一個強符號main和一個弱符號p1
C.在m2中,定義了一個強符號p1和一個強符號main
D.因為出現了兩個強符號main,所以會發生鏈接錯誤
B.在m1中,定義了一個強符號main和一個弱符號p1
C.在m2中,定義了一個強符號p1和一個強符號main
D.因為出現了兩個強符號main,所以會發生鏈接錯誤
8.以下是兩個源程序文件:
|
|
A.雖然x、main和p1都出現了多次定義,但不會發生鏈接錯誤
B.m1中對x的兩處引用都與m1中對x的定義綁定
C.m2中對x的引用與m2中對x的定義綁定
D.m2中的變量p1與函數p1被分配在不同存儲區
B.m1中對x的兩處引用都與m1中對x的定義綁定
C.m2中對x的引用與m2中對x的定義綁定
D.m2中的變量p1與函數p1被分配在不同存儲區
9.以下是兩個源程序文件:
|
|
上述程序執行的結果是( )。提示:1074790400=2^30+2^20,16400=2^14+2^4。
A.x=0, z=-16400
B.x=-1074790400, z=0
C.x=-1, z=2
D.x=100, z=2
B.x=-1074790400, z=0
C.x=-1, z=2
D.x=100, z=2
10.假設調用關系如下:func.o→libx.a和liby.a中的函數,libx.a→libz.a中的函數,libx.a和liby.a之間、liby.a和libz.a相互獨立,則以下幾個命令行中,靜態鏈接發生錯誤的命令是( )。
A.gcc -static –o myfunc func.o libx.a libz.a liby.a
B.gcc -static –o myfunc func.o libx.a liby.a libz.a
C.gcc -static –o myfunc func.o liby.a libx.a libz.a
D.gcc -static –o myfunc func.o liby.a libz.a libx.a
B.gcc -static –o myfunc func.o libx.a liby.a libz.a
C.gcc -static –o myfunc func.o liby.a libx.a libz.a
D.gcc -static –o myfunc func.o liby.a libz.a libx.a