Mac OS X下的动态链接库

简介:
动态链接库已成为现代操作系统的基本组成部分,比如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。

相关文章
|
11月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
743 11
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
1041 2
|
Shell Python
Python 的 os 库的应用实例
Python 的 os 库的应用实例
234 3
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
369 0
|
Python
Python基本文件操作及os库
以上仅为Python文件操作和os库的基本用法,实际使用中需要根据具体需求进行调整。
148 1
|
Python
Python基本文件操作及os库
以上仅为Python文件操作和os库的基本用法,实际使用中需要根据具体需求进行调整。
105 1
|
Python
Python中使用os库管理环境变量
在Python中,可以使用os库来管理操作系统的环境变量。通过os.environ对象,我们可以获取、修改和删除环境变量的值。
410 3
|
Shell Go API
7天玩转 Golang 标准库之 os
7天玩转 Golang 标准库之 os
176 1
|
安全 Java iOS开发
MAC OS X 硬盘安装详细分解教程
MAC OS X 硬盘安装详细分解教程
498 1
|
编解码 Oracle iOS开发
VirtualBox虚拟机安装Mac OS X Lion系统详解
VirtualBox虚拟机安装Mac OS X Lion系统详解
980 1

热门文章

最新文章

推荐镜像

更多