zoukankan      html  css  js  c++  java
  • .a 文件 和 so 文件

           所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。.so文件是共享库文件(动态链接)。动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息),仅当应用程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的.so之间建立链接关系。
     
    .a文件是多个.o文件的组合。.o文件就是对象文件,里面包含的内容就是01这样的机器可执行的指令,当程序要执行时还需要进行链接(link).链接就是把多个.o文件链成一个可执行文件。
     
     可以参考:https://www.cnblogs.com/luntai/p/5291354.html
     
     
    事情源于一次gdb调试。因为要gdb 3rdpary库的源码,发现编译的服务的debug版本并不能查看到对应文件的符号,后来发现是 这个3rdpary库中的文件编译成了.a的静态库,然而这个的静态库并不是 release版本,并没有 -g的选项。于是先编译了debug版的静态库,然后再编译debug的服务。gdb即可
  • 相关阅读:
    关于基于.net的WEB程序开发所需要的一些技术归纳
    技术的学习方法探索之一
    生活,就是让程序为人们服务!
    js滑动提示效果
    radio判断是否为空
    JS清除网页历史记录,屏蔽后退按钮
    多表查询存储过程
    IP地址转化为数字,charindex ,SUBSTRING
    c# byte转化为string
    获得IP地址中文
  • 原文地址:https://www.cnblogs.com/simplepaul/p/10400252.html
Copyright © 2011-2022 走看看