标签:动态链接 资源 应用 时间 两种 支持 不能 开头 指定
链接方式分为两种:静态链接、动态链接。
静态链接
由链接器在链接时将库的内容加入到可执行程序中。
优点:
? 对运行环境的依赖性较小,具有较好的兼容性。
? 程序在运行的时候不需要库的支持。
缺点:
? 生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间。
? 库函数有了更新,必须重新编译应用程序。
动态链接
链接器在链接时仅仅建立与所需库函数之间的链接关系,在程序运行时才将所需资源调入可执行程序。
优点:
? 在需要的时候才调入对应的资源函数。
? 简化程序的升级,有着较小的程序体积。
? 实现进程之间的资源共享(避免重复拷贝)。
缺点:
? 依赖动态库,不能独立运行。
? 动态库依赖版本问题严重。
? 程序在运行的时候需要库的支持。
静态链接库与动态链接库
? 静态链接库在Linux中后缀为.a,以lib开头。如:libtestlib.a
? 动态链接库在Linux中后缀为.so,以lib开头。如:libtestlib.so
? 动态编译:gcc hello.c -o hello
? 静态编译:gcc hello.c -static -o hello
? 使用gcc 源文件名 -o 目标文件名时,系统默认采用动态链接的方式进行编译程序,若想采用静态编译,加入-static参数。
? 当静态库与动态库重名时,系统会优先连接动态库,或者可以加入-static指定使用静态库。
标签:动态链接 资源 应用 时间 两种 支持 不能 开头 指定
原文地址:http://www.cnblogs.com/lemongirl/p/7891625.html