#nm libfoobar.a
foo.o:
0000000000000000 T foo
U puts
bar.o:
0000000000000000 T bar
U puts 现的静态库是有了,要怎么使用这样的静态库呢。应用程序要使用静态库就必须要与静态库链接起来。这里假设有一个main.c的C文件。应用程序与静态库的链接是在编译期完成的. [cpp]
view plaincopyprint?
#gcc -g -o foobar main.c -L. –lfoobar
或者直接:gcc –o foobar main.c libfoobar.a
zfz@zfz:~/program$ ./foobar
This is foo!library2 is
foo()=foo
This is library1 is called
bar()=bar
#gcc -g -o foobar main.c -L. –lfoobar
或者直接:gcc –o foobar main.c libfoobar.a
zfz@zfz:~/program$ ./foobar
This is foo!library2 is
foo()=foo
This is library1 is called
bar()=bar 总结一下啦~~~~ 静态链接库是一种“复制式”的链接过程。何谓“复制式”的链接过程呢,当静态链接库与应用程序链接时,链接器会将静态链接库复制一份到最终得到的可执行代码中去。比如:现在有两个应用程序A和B,两者都要用到libfoobar.a所提供的功能。那么,在编译链接A时,链接器将复制一份libfoobar.a到A最终的可执行代码中去,libfoobar.a中的调试信息也会被复制,同样,在链接B时,链接器也会复制一份libfoobar.a到B最终的可执行代码中去。这就是“复制式”链接的意义。查看foobar程序用到的动态链接库: [cpp]
view plaincopyprint?