亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2871 | 回復: 3
打印 上一主題 下一主題

用靜態(tài)庫鏈接program時具體鏈接多少內(nèi)容? [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-09-06 07:57 |只看該作者 |倒序瀏覽
program調(diào)用static library中的一個function foo()
但static library的.a文件包括f1.o, f2.o, f3.o,其中f2.o包括了foo()和bar()

在鏈接program時,.a文件里面的哪些代碼被放進了輸出可執(zhí)行文件中了?
是foo(),還是f2.o,還是.a全部?

論壇徽章:
0
2 [報告]
發(fā)表于 2008-09-06 11:37 |只看該作者
foo()............................

論壇徽章:
0
3 [報告]
發(fā)表于 2008-09-06 13:59 |只看該作者
這個取決于編譯器。首先肯定不是.a全部連接的,這個可以肯定。對于GCC一般是以.o為單位的,即你使用了foo(),那么所在.o會全部被連接進目標程序中。VC6.0則是基于函數(shù)連接的,即只連接所使用函數(shù)的目標代碼,所以在VC6.0中可以很方便地自己“重載”庫函數(shù),而GCC就會導致沖突。

這個實際上自己做一些程序很容易測試出來的,用編譯器加上objdump靜態(tài)分析一下就很清楚了。

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
4 [報告]
發(fā)表于 2008-09-06 14:28 |只看該作者
一般來說鏈接的時候是以.o為單位的;

  1. linux-0gt0:/tmp/test.tmp/1 # cat >1.c
  2. int func1(){return 1;}
  3. int func2(){return 2;}
  4. linux-0gt0:/tmp/test.tmp/1 # cat >2.c
  5. int func3(){return 3;}
  6. int func4(){return 4;}
  7. linux-0gt0:/tmp/test.tmp/1 # cat >3.c
  8. int func1();
  9. main()
  10. {
  11.         func1();
  12. }
  13. linux-0gt0:/tmp/test.tmp/1 # cat >Makefile
  14. SRC_LIB=1.c 2.c
  15. SRC=3.c
  16. all:a.out
  17. a.out:3.o lib1.a
  18.         gcc 3.c -L. -l1
  19. lib1.a:1.o 2.o
  20.         ar rcs $@ $^
  21. linux-0gt0:/tmp/test.tmp/1 # make
  22. cc    -c -o 3.o 3.c
  23. cc    -c -o 1.o 1.c
  24. cc    -c -o 2.o 2.c
  25. ar rcs lib1.a 1.o 2.o
  26. gcc 3.c -L. -l1
  27. linux-0gt0:/tmp/test.tmp/1 # nm a.out | grep func
  28. 080483a4 T func1
  29. 080483ae T func2
復制代碼

[ 本帖最后由 cjaizss 于 2008-9-6 14:57 編輯 ]
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP