一步一步学Linux C:关于静态链接库(2)

现的静态库是有了,要怎么使用这样的静态库呢。应用程序要使用静态库就必须要与静态库链接起来。这里假设有一个main.c的C文件。应用程序与静态库的链接是在编译期完成的.

#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程序用到的动态链接库:

$ ldd foobar   linux-gate.so.1 => (0xffffe000)   libc.so.6 => /lib/libc.so.6 (0xb7e29000)   /lib/ld-linux.so.2 (0xb7f6e000)   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywfjy.html