实战总结----用Makefile编译生成动态链接库.so

写在前面:

1、在实际项目开发当中,库文件用的很多,尤其是在不同的 企业之间为了防止源码公开,都是以库的形式提供给对方,然后提供必要的头文件就可以了。本文主要介绍Linux下和Windows下的库的格式,以及动态链接库和静态链接库的作用,Linux下如何用Makefile编译制作动态链接库的方法。

2、Makefile博大精深,在平时用的不多,所以本文也是对刚刚用过的Makefile简单使用的方法做一下总结,加深下印象。

QQ:993650814

正文:

一、 动态链接库和静态链接库

1、Windows下和Linux下的格式:

     Windows下动态链接库的格式:.dll ; 静态链接库的格式:  .lib;

     Linux 下动态链接库的格式: .so;    静态链接库的格式: .a

2、Linux下动态链接库和静态链接库的不同点:

     .a静态库:

              链接时间:静态库在编译的过程中被加载入程序中。

              链接方式:静态库的链接是将整个库中所有的函数整合进了目标代码。这样的优点是编译后的程序不再需要外部函数库                                  支 持。缺点是,如果要改变静态库,则需要重新编译整个工程。

 

     .so动态库:

               链接时间:编译的过程中不需要将动态库编译进目标代码,而是当程序执行到相关函数的时候才去调用动态库中的相应                                   函数。优点是,动态库的改变不影响程序,动态库的升级比较方便。缺点是,程序在运行的时候必须提供                                      相应的库。

              所以,他们两者还有一个很大的不同点:同一个程序分别使用静态库和动态库两种方式来生成可执行文件的时候,静态    链接所生成的文件所占的内存要远远大于动态链接。

你可能感兴趣的:(实战经验积累)