Ios OSX:convert.dylib to.a/.o(动态到静态)?

Ios OSX:convert.dylib to.a/.o(动态到静态)?,ios,static-libraries,dylib,tbb,dynamic-library,Ios,Static Libraries,Dylib,Tbb,Dynamic Library,假设我已经读过了,我仍然想使用TBB作为静态链接库。(假设我工作的地方不允许用户创建自己的动态库。)但我并不想重写TBB生成文件来生成libtbb.a而不是libtbb.dylib 是否有一种简单的命令行方法可以使用相同的入口点将libtbb.dylib转换为libtbb.o 我听到了一个很好的论点,认为不能从静态转向动态。即:动态库需要是PIC,而将非PIC静态库转换为PIC是不可行的。但据我所知,这一论点并不适用于其他方面 有人说在Windows上不可能将.dll转换为.a,但我认为他们只是

假设我已经读过了,我仍然想使用TBB作为静态链接库。(假设我工作的地方不允许用户创建自己的动态库。)但我并不想重写TBB生成文件来生成libtbb.a而不是libtbb.dylib

是否有一种简单的命令行方法可以使用相同的入口点将libtbb.dylib转换为libtbb.o

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


有人说在Windows上不可能将.dll转换为.a,但我认为他们只是说不可能将.dll或.exe备份为其原始.o文件,而不一定说不可能创建具有相同内容的可链接.o文件。此外,Windows上的情况也是如此,尽管我认为这与此无关。

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

如果您在其他地方找到了一个针对ARM的
libtbb.dylib
文件,那么您可能可以在iOS上使用它。实际上,可以在iOS上加载动态库。请查看手册页


最后,您应该阅读有关的内容,这是iOS和OS X中对多核硬件上并发代码执行的内置支持。

对GCD参考进行了投票。只有这样才值得赏金:)@JavierSoto:我99%相信
dlopen
在iOS上不起作用(尽管只是为了增加困惑,我认为有一种方法可以让它在模拟器中起作用)。我听说过苹果希望应用程序简单、独立,避免应用商店中的DLL地狱。如果有人在iOS应用程序中成功使用动态库,请发表评论。是的,dlopen在iOS上确实有效。你不能用Xcode轻松创建DYLIB,但可以在命令行上用clang创建它们。在iOS上动态加载代码肯定也能在设备上运行。我有一个项目,其中bundle使用
-[NSBundle load]
进行加载,我确信最终会调用
dlopen
。(此项目尚未提交到应用商店。)捆绑包或动态库中的代码必须使用与应用相同的配置文件进行签名。我认为苹果对动态库的关注不是DLL地狱,而是下载和执行代码的安全隐患。@Quuxplusone也许设计不应该关心哪个线程运行哪个任务?GCD提供的抽象通过考虑队列和忘记底层线程提供了很多简单性。。。