我正在尝试将我编写的一些代码从 Mac OS X 移植到 Linux,并且正在努力寻找仅适用于 OSX 的合适替代品OSAtomic.h
。我找到了海湾合作委员会__sync*
系列,但我不确定它是否与我拥有的旧编译器/内核兼容。我需要代码在 GCC v4.1.2 和内核 2.6.18 上运行。
我需要的具体操作是:
奇怪的是跑步locate stdatomic.h
在 Linux 机器上找到头文件(在 c++ 目录中),而在我的 OSX 机器(gcc v4.6.3)上运行相同的命令不会返回任何内容。我必须安装什么才能获取 stdatomic 库,它可以与 gcc v 4.1.2 一起使用吗?
附带说明,我无法使用任何第三方库。
好吧,没有什么可以阻止您使用OSAtomic
其他平台的操作。来源为OSAtomic
ARM、x86 和 PPC 的操作是 Apple 开源 libc 的一部分。只要确保您没有使用OSSpinLock
因为这是 Mac OS X 特有的,但这可以很容易地被 Linux futexes 取代。
看看这些:
http://opensource.apple.com/source/Libc/Libc-594.1.4/i386/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/i386/sys/OSAtomic.s
http://opensource.apple.com/source/Libc/Libc-594.1.4/ppc/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/ppc/sys/OSAtomic.s
http://opensource.apple.com/source/Libc/Libc-594.1.4/arm/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/arm/sys/OSAtomic.s
或者,您可以使用sync_*
family,我相信它应该适用于大多数平台,我相信这里有描述:http://gcc.gnu.org/wiki/Atomic http://gcc.gnu.org/wiki/Atomic
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)