.o .a .lo .la
转载引用: 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
,然后用greadelf
和gobjdump
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相关推荐
- SVN、Git设置提交时忽略的文件
个人正在使用的:global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.pyc *.pyo [Tt]humbs.db [Bb]in [ ...
- svn import无法上传库文件lib.a
2019独角兽企业重金招聘Python工程师标准>>> 将本地代码import到svn服务器,服务器上少了所有*.a文件的问题,静态库文件均被忽略. svn co出代码,编译却报错少 ...
- 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));% ...
- svn 文件状态标记含义
svn status打印五列字符,紧跟一些空格,接着是文件或者目录名.第一列告诉一个文件的状态或它的内容,返回代码解释如下: A item 文件.目录或是符号链item预定加入到版本库. C item ...
- Ruby中对象数组排序
Ruby对象数组的排序 作者刚刚接触Ruby,因之前总认为脚本语言语法不规范,对脚本语言有些偏见,如不是项目需要并不会去学习PYTHON.RUBY等语言.现在项目中需要实现对象数组排序的任务,对于昨天 ...
- Mercurial 版本控制服务器(Web Server)的搭建
关于 Mercurial 的简介和基本操作,请参见小G的随笔<Mercurial(Hg)基本操作>. 我不再赘述 Mercurial 的各种让人振奋的特性,上一篇中我们提到了使用第三方版本 ...
- SVN 如何提交 SO 库文件
今天提交代码时候发现,svn add 还是 svn st 均查看不到想要提交的 so 文件. 后来才知道原来是配置文件出了问题,把so文件的提交给屏蔽掉了. 修改步骤如下: 1.Ubuntu 系统,点 ...
- VSS SVN GIT SVN 加锁签出
VSS TFS SVN GIT VSS 两大功能: 1.签出后加锁,别人不能签出,独占签出. 2.在服务端可以查看哪些用户签出了哪些文件. 3.查看所有签出未签入的文件列表,SVN未发现此功能. 缺点 ...
- AnkhSVN的自动加锁
考以下转载文章.配置"[auto-props]",新添加到SVN的文件都会自动加锁,在AnkhSVN插件中,会看到文件前有锁图标,和VSS类似了. 注意,已经添中到SVN中的文件是 ...
最新文章
- Python学习笔记--序列
- Docker Compose 1.18.0 之服务编排详解
- MyClouds-V1.0 发布,微服务治理及快速开发平台
- javascript 之反射
- Android学习----AndroidManifest.xml文件解析
- cxf和spring结合出现问题
- 【codevs3160】 LCS 【后缀自动机】
- GoDaddy域名续费省钱妙招及取消隐私保护的方法
- Shallow Neural Network Week 3
- 浅谈利用强化学习A3C玩转超级玛丽奥
- 通过USB设置手机连接电脑上网
- 键盘删除键长按只能删除一个字符?--关闭Windows筛选键
- 决策规划算法二:生成参考线(FEM_POS_DEVIATION_SMOOTHING)
- vscode中用emmet语法a{}*3无法自动换行
- 【原创】【I2C】I2C介绍
- 液晶弹性自由能计算_液晶材料预倾角与弹性常量的关系
- 小度机器人小胖机器人_小度机器人怎么升级?智能机器人百小度快速升级全攻略[多图]...
- 蓝桥杯:穿越雷区——DFS
- Sportradar宣布与加拿大退休金计划投资委员会和TCV建立新的战略合作伙伴关系
- PWM+DMA驱动SK6812MINI灯带