Tag: 提升

如何在OS X 10.8.4上为iOS模拟器(6.1)编译Boost 1.54.0(1.54)?

我已经成功地设法编译了一些Boost库,并使用这个脚本创build了一个用于OS X,iOS和iOS模拟器的框架: https : //github.com/wuhao5/boost/blob/188e905626dbd522f65950102ed0c8ce77cb28e8/boost.sh基于Peter Goodliffe在这里的工作: http : //goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html Boost 1.53.0使用clang并链接到libc ++。 使用Boost 1.54.0编译iOS模拟器时出现以下错误:脚本失败: /bin/sh: line 1: -ftemplate-depth-128: command not found 。 我做了相当多的挖掘,这就是我所知道的: 在boost.sh中,iOS模拟器bjam和编译器选项包括“-arch i386” Boost 1.54.0发行说明声明“Boost不再支持80386目标CPU” Boost 1.53.0对于OS X,iOS和使用相同脚本的iOS模拟器似乎可以很好地编译 升压1.54.0似乎编译罚款的OS X和iOS本身使用相同的脚本 这是我想我知道的: 将“-d13”传递给bjam(生成debugging信息)时,在为iOS模拟器构build时,似乎没有设置variables“CONFIG_COMMAND”。 对于其他configuration,此variables设置为clangpath,并包含编译器选项。 对于模拟器来说,它是空的,我相信会导致上面的错误,因为当bjam试图运行编译器使用这个variables,它运行一些附加的选项,以模板深度开始。 因此,CONFIG_COMMANDvariables似乎没有正确设置导致失败。 我不知道为什么它没有被设置,因为我不知道Boost构build系统是否足够筛选通过“-d13”标志生成的100 + MB输出的其余部分。 我怀疑与1.54.0引入的“-arch i386”选项不兼容。 我试着改变这个“-arch i486”和“-arch x86_32”,但同样的问题发生。 有没有其他人有这个成功? 我想使用Boost.Log这就是为什么我甚至试图这样做。

提升线程:在IOS中,thread_info对象在线程完成执行之前被破坏

我们的项目在几个平台上使用了几个增强的1.48库,包括Windows,Mac,Android和IOS。 当我们使用IOS的时候,我们能够始终如一地获取项目的IOS版本(非常规但可靠地)崩溃,并且从我们的调查中我们看到〜thread_data_base在线程仍在运行时正在线程的thread_info上被调用。 这似乎是智能指针达到零计数的结果,尽pipe它显然仍在thread_proxy函数的作用域中,该函数创build它并在线程中运行所请求的函数。 这似乎在各种情况下发生 – 调用堆栈在崩溃之间并不相同,尽pipe有一些常见的变化。 只需要清楚一点 – 这通常需要运行代码来创build数百个线程,但同时运行的却不会超过30个。 我很幸运,在运行中也很早,但这很less见。 我创build了一个实际上可以捕获代码的析构函数的版本: 在libs / thread / src / pthread / thread.cpp中: thread_data_base::~thread_data_base() { boost::detail::thread_data_base* const thread_info=detail::get_current_thread_data(); void *void_thread_info = (void *) thread_info; void *void_this = (void *) this; // is somebody destructing the thread_data other than its own thread? // (remember that its own which should […]