动态链接库已成为现代操作系统的基本组成部分,比如Windows下数不清的.DLL文件和
臭名昭著的DLL地狱,Linux下成千上万的.so文件。Mac OS X下也有许多动态链接库,
他们的扩展名是.dylib。

.dylib是Mach-O格式,也就是Mac OS X下的二进制文件格式。Mac OS X提供了一系列
工具,用于创建和访问动态链接库。

编译器/usr/bin/cc,也就是gcc了,Apple改过的。这个主要还是一个壳,去调用其他
的一些部件。当然同时还有/usr/bin/c++,等等。

汇编器/usr/bin/as

链接器/usr/bin/ld

Mac OS X有个自己的工具,/usr/bin/libtool,来创建动态链接库。这个libtool不是
GNU的那个同名的libtool。我记得GNU libtool可以从Fink(http://fink.sf.net)下
载,编译后得到glibtool。

下面来看看如何创建动态链接库。

首先是生成module文件,也就是.o文件。这跟一般的unix没什么区别。例如
cc -c a.c b.c
就得到a.o和b.o

可以用ld来合并.o文件,比如
ld -r -o c.o a.o b.o
这个也没什么特别。

然后可以用libtool来创建动态链接库。
libtool -dynamic -o c.dylib a.o b.o

( 这里也可以用libtool -static -o c.a a.o b.o就创建静态库)

如果用gcc直接编译,我记得linux下一般是可以
gcc -shared -o c.so a.c b.c
而在Mac OS X下需要
gcc -dynamiclib -o c.dylib a.c b.c

这往往也是向Mac OS X移植unix程序常出问题的地方。如果用autoconf/automake等
工具,出错的几率应该小一些。

接着来看看访问动态链接库的工具。

nm是最常用的,这个用法跟linux下差不多
nm c.dylib
可以看到导出符号表,等等。

另一个常用的工具是otool,这个是Mac OS X独有的。比如想看看c.dylib的依赖关系
otool -L c.dylib

最后说一下我对Framework的理解。Framework是Mac OS X下必不可少的部分,不妨去
看看/System/Library/Frameworks/下面,一大堆Framework。Framework是dylib的进
一步演化,它把头文件、文档、动态链接库等整合成一个有机的目录,类似一种自描
述的方式,这种做法其实在Mac OS X下随处可见。比如应用程序,一般都是一个目录,
譬如/Applications/iTunes.app目录对应应用程序iTunes,双击这个目录即开始执行。
这种做法和Windows下常见的一个exe/dll打天下很不相同。

Framework的创建工具也是libtool,详细用法参考man。

Mac OS X下的动态链接库相关推荐

  1. Mac OS X 下连接CMCC无法弹出登陆页面问题

    一般情况下连接中国移动CMCC等其他无线网络的时候,会弹出一个登陆界面,让用户输入账户和密码,然后就可以登陆联网.但是部分童鞋会遇到这样情况:在Mac OS X下连上CMCC的时候无法弹出登陆界面(w ...

  2. 在Mac OS环境下安装MySQL服务

    在Mac OS环境下安装MySQL服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我之前介绍过window环境下安装mysql服务,以及在Linux环境下安装mysql服务,今 ...

  3. Mac OS X 下 TAR.GZ 方式安装 MySQL

    Mac OS X 下 TAR.GZ 方式安装 MySQL 注意: 本篇文章适用与 MySQL 5.6 版本的安装, 但已不再适用 5.7 的安装, 5.7 的安装方式请参见:<Mac OS X ...

  4. 桂电在linux、Mac OS环境下使用出校器(支持2.14)

    这是guetsec学长在三院科协学长所抓包逆向分析1.81版出校器的基础上,用python写的一款为Mac和linux环境开发的出校器. 最后我做了略微修改,支持暂时最新版本2.14.下面有直接从源码 ...

  5. Mac OS X 下 TAR.GZ 方式安装 MySQL5.6

    为什么80%的码农都做不了架构师?>>>    Mac OS X 下 TAR.GZ 方式安装 MySQL 注意: 本篇文章适用与 MySQL 5.6 版本的安装, 但已不再适用 5. ...

  6. 如何在Mac OS X下制作dmg格式的镜像

    如何在Mac OS X下制作dmg格式的镜像 近日需要把Mac的应用程序做个镜像dmg,方便存储,打开Disk Utility,试了几次都失败,才想到去Help查查,没想到说明还很详细,一步一步按照做 ...

  7. Mac OS X下删除或添加鼠标右键菜单项目及清除Mac OS右键菜单重复项

    一.Mac OS X下删除或添加鼠标右键菜单项目 1. 打开 Finder,点击屏幕顶部菜单栏的 "前往",在下拉菜单里选择 "前往文件夹-" 2. 在弹出的输 ...

  8. Mac OS X下开发软件的安装与配置(持续更新ing)

    Mac OS X下开发软件的安装与配置 标签(空格分隔): mac软件 Mac OS X下Maven的安装与配置 下载 Maven, 并解压到某个目录.例如/Users/ruolan/apache-m ...

  9. Mac OS X下开发软件的安装与配置

    Mac OS X下开发软件的安装与配置 标签(空格分隔): mac软件 ##Mac OS X下Maven的安装与配置 下载 Maven, 并解压到某个目录.例如/Users/ruolan/apache ...

最新文章

  1. [problem]快速排序和归并排序
  2. 精简 opencv python_基于Python的OpenCV人脸检测!简直不要太简单!
  3. Fix “Windows cannot access the specified device path or file” Error
  4. 你见过出道即巅峰吗?
  5. PHP中extract()函数的定义和用法
  6. 文件从一台服务器拷贝到另一台服务器
  7. opencv之在图像上绘制标记---drawMarker
  8. jQuery常用语法笔记
  9. java实验原理_java实验报告实验原理.doc
  10. 这篇文章说说特征工程(反欺诈与征信变量)
  11. 微信小程序数据拼接_微信小程序数据处理
  12. 华三交换机配置access命令_H3C 交换机常用配置命令
  13. 图片文字转换成word软件在线版
  14. 一款应用ANR的分析思路总结
  15. 论文参考文献生成代码(2021.2.25)
  16. matlab中switch函数的使用
  17. Linux 奔腾4,我如何在Pentium 4计算机上安装Ubuntu 64位?
  18. 模式识别基本概念小结(学习笔记)
  19. 数字图像处理 图像形态学处理
  20. PB 中获取时间的方法

热门文章

  1. PCA主成分分析(原理+例子)
  2. 计算机毕业设计Java诚越园区垃圾分类信息科普系统(源码+系统+mysql数据库+lw文档)
  3. 学生php作业,作业作业作业作业作业
  4. 虾皮Shopee上货铺货助理工具
  5. 垃圾分类,全民行动PPT模板
  6. 如何选择最好的研究方法?——Nvivo教程
  7. 沃尔玛中国将采用唯链雷神区块链追踪食品供应链
  8. linux的veth导致网络不通,使用veth-pair和bridge搭建的本地网络环境网络不通
  9. GitLab CI/CD中的常用预设变量
  10. yolov7基于python 的onnx推理