.a
为扩展名,编译时直接链接到程序;动态库以.so
为扩展名,运行时加载。使用l
选项指定库名(不含前缀)进行链接。在Linux中,库文件分为两种类型:静态库和动态库。
静态库:
1、静态库是在编译时将库文件的代码直接链接到目标程序中,生成一个可执行文件。
2、静态库的文件扩展名为“.a”,libexample.a。
3、使用静态库的优点是可以独立于库文件运行,不需要额外的依赖;缺点是生成的可执行文件较大,且如果有多个程序使用了同一个静态库,会导致冗余的代码。
创建静态库:
gcc c example.c o example.o ar rcs libexample.a example.o
使用静态库:
gcc main.c L. lexample o main
动态库:
1、动态库是在运行时将库文件的代码加载到内存中,与目标程序进行链接。
2、动态库的文件扩展名为“.so”,libexample.so。
3、使用动态库的优点是可以减少可执行文件的大小,且多个程序可以共享同一个动态库,减少内存占用;缺点是需要额外的依赖,如果动态库不存在或版本不匹配,程序无法运行。
创建动态库:
gcc c fPIC example.c o example.o gcc shared example.o o libexample.so
使用动态库:
gcc main.c L. lexample o main
1、静态库和动态库都是用于封装代码的方式,静态库在编译时链接,动态库在运行时链接。
2、静态库的优点是独立于库文件运行,缺点是生成的可执行文件较大;动态库的优点是可以减少可执行文件的大小,缺点是需要额外的依赖。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/766690.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复