微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – OS X:将.dylib转换为.a / .o(动态到静态)?

假设我已经阅读了 this caveat,我仍然希望将TBB用作静态链接库. (假装我在 an environment工作,不允许用户创建自己的dylib.)但我真的不想重写TBB makefile来生成libtbb.a而不是libtbb.dylib.

是否有一个简单的命令行方式将libtbb.dylib转换为libtbb.o并使用相同的入口点?

我听到了一个很好的论据,因为从静态到动态不能走另一条路.即:动态库需要是PIC,将非PIC静态库转换为PIC是不可行的.但据我所知,这一论点并不适用于其他方向.

Here’s有人说在Windows上将.dll转换为.a是不可能的,但我认为他们只是在谈论将.dll或.exe备份到其原始的.o文件中的不可能性,并不一定说它不可能创建具有相同内容的可链接.o文件.此外,Windows上的情况是slightly odder than “real” PIC,虽然我不认为这是相关的.

解决方法

适用于Windows,Mac和Linux的英特尔线程构建模块(TBB)为 available as binary.如果您希望在iOS上使用Mac发行版中的libtbb.dylib,那么您就不走运了. Mac发行版针对英特尔(32位和64位).由于iOS在ARM处理器上运行,即使您找到了将动态库转换为静态库的方法,也无法使用它.

如果你找到一个针对ARM的其他目标的libtbb.dylib文件,那么你可以在iOS上使用它.实际上可以在iOS上加载动态库.看看dlopen(3)手册页.

最后,您应该阅读有关Grand Central Dispatch (GCD)内容,它内置支持iOS和OS X中多核硬件上的并发代码执行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐