LD连接器为什么将静态库中的函数强加给我?

软件和网站开发以及相关技术探讨
回复
arthursday
帖子: 1
注册时间: 2009-05-15 9:45

LD连接器为什么将静态库中的函数强加给我?

#1

帖子 arthursday » 2009-05-15 10:00

一个库函数:libtest.a,其中有t0、t1、t2、t3、t4函数。 (创建方法: ar -rcs libtest.a t.o)

一个应用程序:test.c,其中仅调用了t0。

编译方法:gcc test.c -L. -ltest -o test

为什么得到的目标文件中还有t1、t2、t3、t4的代码?难道ld的最小连接单位是.o而不是函数?!不可能吧!

怎样让连接器仅连接所用到的库代码?
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

Re: LD连接器为什么将静态库中的函数强加给我?

#2

帖子 windwiny » 2009-05-15 16:41

...静态的就是整个吧
头像
shellex
帖子: 2180
注册时间: 2007-02-18 19:33
系统: OSX
来自: lyric.im
联系:

Re: LD连接器为什么将静态库中的函数强加给我?

#3

帖子 shellex » 2009-05-15 17:25

是的 。。。。
既然你诚心诚意地问了
我就大慈大悲地告诉你
为了防止世界被破坏
为了维护世界的和平
贯彻爱与真实的罪恶
可爱而又迷人的反派角色
武藏,小次郎
我们是穿越银河的火箭队,白洞白色的明天在等着我们。就是这样!!喵~~
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: LD连接器为什么将静态库中的函数强加给我?

#4

帖子 BigSnake.NET » 2009-05-15 20:41

难道ld的最小连接单位是.o而不是函数

显然就是这样
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
回复