- 论坛徽章:
- 0
|
为了说明问题,先假设一个例子:
现在有两个.c文件,分别为main.c和func.c。func.c包含若干个函数(func1,func2 ....)的定义.
main.c中的含有main函数,它要调用func.c中定义的一个函数,比如:
main( )
{
...
func2( );
...
}
为了生成最终的可执行文件test4lib,采用两种方式:
1. gcc -o test4lib main.c func.c
在此种方式下,func.c中定义的所有函数func1,func2...等应该都被包含到最终的可执行文件test4lib中
2. 先用ar将func.o加入到一个库libtest.a,然后
gcc -static -o test4lib -L./ -ltest
在此种方式下link是怎样进行的.是只将func2包含进test2lib中吗?
如果上述说法成立,按第一种方式生成的test4lib文件的size应该比第二种方式的大,可我的试验结果却相反!需要说明的是,main函数和func1,func2..函数都没有再调用其他的标准库函数.哪位高手可以解释一下原因? 谢谢! |
|