外贸建立网站怎么做,南京注册公司,企业网站源码打包,编程入门教程一、动静态库
1、库的理解 库其实是给我们提供方法的实现#xff0c;如上面的对于printf函数的实现就是在库中实现的#xff0c;而这个库也就是c标准库#xff0c;本质也是文件#xff0c;也有对应的路径 2、区别 静态库是指编译链接时#xff0c;把库文件的代码全部加入…一、动静态库
1、库的理解 库其实是给我们提供方法的实现如上面的对于printf函数的实现就是在库中实现的而这个库也就是c标准库本质也是文件也有对应的路径 2、区别 静态库是指编译链接时把库文件的代码全部加入到可执行文件中 动态库:在程序执行时由运行时链接文件加载库只加载所需要的节省空间大小 Linux中.so(动态库) .a(静态库) windows : .dll(动态库) .lib(静态库) 在Linux中只会安装动态库而静态库需要自己安装
由于gcc编译时默认使用的是动态库完成的是动态链接如要实现静态链接就要添加-static 3、命名规则 libname.so.xxx,name为c就是c库c就是c库 4、 库的作用
方法的实现就在库当中库就是将源文件(.c)经过一定的翻译然后打包封装然后只提供一个所需的文件而将其他源文件隐藏
具体的软件的实现 头文件中的方法声明 库文件提供的方法实现 具体代码
二、动静态链接
先讲一个故事方便理解 1、动静态链接
动态链接就是当可执行程序自己完成不了时就需要跳转到库中执行库中的方法执行完后再进行返回
特点拷贝的是在哪里实现不拷贝具体的实现方法动态库只需要一个;可执行程序依旧依赖库一旦缺失动态库会影响很多的可执行程序无法正常运行
编译器使用静态库进行静态链接时会将静态库的所有方法实现拷贝到可执行程序中使该程序不再依赖静态库
注意点 1.如果我们没有静态库但就要-static 是不行的 2.如果没有动态库但有静态库而且gcc能找到这个是可以的 因为gcc默认优先动态链接 而-static的本质就是改变优先级使所有链接要求变为静态链接并且只能适配一次
3.所有的链接都是静态链接和动态链接混合使用的
2、优缺点
动态库优因为是共享库可以有效的节省资源(磁盘空间内存空间网络空间等) 缺一旦缺失导致各个程序都无法运行
静态库优不依赖库程序可以独立运行 缺体积大比较消耗资源
3、ldd和file 指令
ldd 可以查询文件依赖的动态库 方法ldd 文件名
file 可以查询可执行程序是动态链接还是静态链接 方法 file 文件名