我已经开发了一个多线程程序,它依赖于stdatomic.h中atomic_int、atomic_store和atomic_load的可用性。该程序是与GCC一起编写的。
现在,我尝试在几个缺少stdatomic.h的旧操作系统版本上编译该程序,但都失败了。不幸的是,这是一个要求,我能够在旧机器上编译程序以及。因此,仅在新的操作系统版本上编译程序并在旧版本上运行二进制文件是不够的。
有没有办法在更老的机器上模拟stdatomic.h,也许可以使用一些特定于GCC的内置函数?
虽然在旧操作系统上安装较新版本的GCC可能是解决方案,但当前的构建系统已将调用硬编码为" GCC“,而且由于旧操作系统的包管理系统中没有它,因此必须从头编译新的GCC。因此,理想情况下,答案应该是在旧的GCC版本上工作的东西。
发布于 2017-03-05 21:27:05
最好的办法是推出自己的包装器。如果可用,则使用stdatomic,否则使用互斥锁或特定于平台的指令来模拟操作。
https://stackoverflow.com/questions/42608242
复制相似问题