摘要:
静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。 而依赖动态库的程序其实也有链接动态库的阶段,只不过这个链接并不是真正的将动态库链接到程序中,其目的是告诉程序,所依赖的到底是哪个动态库。 静态库有点类似于将静态库复制到程序中,而动态库是在程序中创建 阅读全文
摘要:
在编译动态库的时候,我们应该需要使用-fpic 或-fPIC参数。 pic 与PIC的异同 相同点:都是为了在动态库中生成位置无关的代码。通过全局偏移表(GOT)访问所有常量地址。程序启动时动态加载程序解析GOT条目。 不同点:如果链接的可执行文件的GOT大小超过计算机特定的最大大小,则会从链接器收 阅读全文
摘要:
gcc 生成 .a静态库和 .so动态库 我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本 阅读全文
摘要:
现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中。否则如果出现有定义,比如头文件中有int a =2;如果有多个源程序文件引用该头文件,那么在链接的时候就会出现重复定义,即使在头文件的首尾添加#ifnef,#de 阅读全文
摘要:
// 为什么需要熔断 微服务集群中,每个应用基本都会依赖一定数量的外部服务。有可能随时都会遇到网络连接缓慢,超时,依赖服务过载,服务不可用的情况,在高并发场景下如果此时调用方不做任何处理,继续持续请求故障服务的话很容易引起整个微服务集群雪崩。比如高并发场景的用户订单服务,一般需要依赖一下服务: 商品 阅读全文