您当前的位置: 首页 > 

Mac OS X下的动态链接库

发布时间:2013-05-09 20:41:18 ,浏览量:0

动态链接库已成为现代操作系统的基本组成部分,比如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。
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108253博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1439s