转载引用: Linux中的动态库和静态库(.a/.la/.so/.o) - findumars - 博客园

  • .o 是目标文件,相当于Windows中的.obj文件
  • .so 为共享库,是shared object,用于动态连接的,和dll差不多
  • .a 为静态库,是好多个.o合在一起,用于静态连接
  • .lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息
  • .la 为libtool自动生成的一些共享库,vi编辑查看,记录同名动态库和静态库的相关信息
    。可以用如下命令查看*.la文件的格式

工具:libtools

使用brew update && brew install binutils,然后用greadelfgobjdump

binutils is keg-only, which means it was not symlinked into /usr/local,
because because Apple provides the same tools and binutils is poorly supported on macOS.If you need to have binutils first in your PATH run:echo 'export PATH="/usr/local/opt/binutils/bin:$PATH"' >> ~/.bash_profileFor compilers to find binutils you may need to set:export LDFLAGS="-L/usr/local/opt/binutils/lib"export CPPFLAGS="-I/usr/local/opt/binutils/include"

>>readelf -h atoi.o
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start

使用 otool 命令查看:

>> otool -l atoi.o

结果:

atoi.o:
Load command 0cmd LC_SEGMENT_64cmdsize 392segnamevmaddr 0x0000000000000000vmsize 0x00000000000000a0fileoff 552filesize 160maxprot 0x00000007initprot 0x00000007nsects 4flags 0x0
Sectionsectname __textsegname __TEXTaddr 0x0000000000000000size 0x000000000000003doffset 552

>> file atoi.o
atoi.o: Mach-O 64-bit object x86_64

>> otool -L main
main:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)

>> otool -L atoi.so.1
atoi.so.1:
    atoi.so.1 (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)

>> libtool --mode=compile gcc -c atoi.c
error: /Library/Developer/CommandLineTools/usr/bin/libtool: unknown option character `-' in: --mode=compile

原因:This is because OS X has its own libtool, quite different from GNU's libtool。

解决方案:安装 gnubin 工具,直接brew install libtool* 即可。

>> brew install libtool*

>> libtool --tag=CC  --mode=compile gcc -c atoi.c
libtool: compile:  gcc -c atoi.c  -fno-common -DPIC -o .libs/atoi.o
libtool: compile:  gcc -c atoi.c -o atoi.o >/dev/null 2>&1

.o .a .lo .la相关推荐

  1. SVN、Git设置提交时忽略的文件

    个人正在使用的:global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.pyc *.pyo [Tt]humbs.db [Bb]in [ ...

  2. svn import无法上传库文件lib.a

    2019独角兽企业重金招聘Python工程师标准>>> 将本地代码import到svn服务器,服务器上少了所有*.a文件的问题,静态库文件均被忽略. svn co出代码,编译却报错少 ...

  3. figure文本框乱码 matlab_Matlab给系统自动生成的窗体Figure1改名称

    a=get(gca); x=a.XLim;%获取横坐标上下限 y=a.YLim;%获取纵坐标上下限 k=[0.8 0.9];%给定text相对位置 x0=x(1)+k(1)*(x(2)-x(1));% ...

  4. svn 文件状态标记含义

    svn status打印五列字符,紧跟一些空格,接着是文件或者目录名.第一列告诉一个文件的状态或它的内容,返回代码解释如下: A item 文件.目录或是符号链item预定加入到版本库. C item ...

  5. Ruby中对象数组排序

    Ruby对象数组的排序 作者刚刚接触Ruby,因之前总认为脚本语言语法不规范,对脚本语言有些偏见,如不是项目需要并不会去学习PYTHON.RUBY等语言.现在项目中需要实现对象数组排序的任务,对于昨天 ...

  6. Mercurial 版本控制服务器(Web Server)的搭建

    关于 Mercurial 的简介和基本操作,请参见小G的随笔<Mercurial(Hg)基本操作>. 我不再赘述 Mercurial 的各种让人振奋的特性,上一篇中我们提到了使用第三方版本 ...

  7. SVN 如何提交 SO 库文件

    今天提交代码时候发现,svn add 还是 svn st 均查看不到想要提交的 so 文件. 后来才知道原来是配置文件出了问题,把so文件的提交给屏蔽掉了. 修改步骤如下: 1.Ubuntu 系统,点 ...

  8. VSS SVN GIT SVN 加锁签出

    VSS TFS SVN GIT VSS 两大功能: 1.签出后加锁,别人不能签出,独占签出. 2.在服务端可以查看哪些用户签出了哪些文件. 3.查看所有签出未签入的文件列表,SVN未发现此功能. 缺点 ...

  9. AnkhSVN的自动加锁

    考以下转载文章.配置"[auto-props]",新添加到SVN的文件都会自动加锁,在AnkhSVN插件中,会看到文件前有锁图标,和VSS类似了. 注意,已经添中到SVN中的文件是 ...

最新文章

  1. Python学习笔记--序列
  2. Docker Compose 1.18.0 之服务编排详解
  3. MyClouds-V1.0 发布,微服务治理及快速开发平台
  4. javascript 之反射
  5. Android学习----AndroidManifest.xml文件解析
  6. cxf和spring结合出现问题
  7. 【codevs3160】 LCS 【后缀自动机】
  8. GoDaddy域名续费省钱妙招及取消隐私保护的方法
  9. Shallow Neural Network Week 3
  10. 浅谈利用强化学习A3C玩转超级玛丽奥
  11. 通过USB设置手机连接电脑上网
  12. 键盘删除键长按只能删除一个字符?--关闭Windows筛选键
  13. 决策规划算法二:生成参考线(FEM_POS_DEVIATION_SMOOTHING)
  14. vscode中用emmet语法a{}*3无法自动换行
  15. 【原创】【I2C】I2C介绍
  16. 液晶弹性自由能计算_液晶材料预倾角与弹性常量的关系
  17. 小度机器人小胖机器人_小度机器人怎么升级?智能机器人百小度快速升级全攻略[多图]...
  18. 蓝桥杯:穿越雷区——DFS
  19. Sportradar宣布与加拿大退休金计划投资委员会和TCV建立新的战略合作伙伴关系
  20. PWM+DMA驱动SK6812MINI灯带

热门文章

  1. 什么是.NET的程序集?
  2. 跑步运动蓝牙耳机哪个好?跑步无线运动蓝牙耳机推荐
  3. XP系统如搭建ftp服务器,XP系统如搭建ftp服务器
  4. 吃鸡神器!12G+128G 平板电脑吃鸡贼爽,送!
  5. LiveGBS国标流媒体-摄像头网络直播方案部署问题
  6. vue 路由二级跳转三级路由,路径变化页面没变
  7. JFinal极速开发微信公众号
  8. 能够修改证件照的软件有哪些?分享两种好用的修改工具
  9. 词霸天下---141词根 【-habit- = -hibit- 拥有,占据,居住 】
  10. python经典教程_零基础 Python爬虫经典实战教程