在 gcc 3.4.3 中使用原子操作

发布于 2024-12-10 14:18:22 字数 262 浏览 0 评论 0原文

内置原子操作是在 gcc 中引入的-4.1.2。但是,我在 OpenIndiana 上使用 gcc,它只有 gcc 3.4.3。现在我的问题是如何在 gcc 3.4.3 中使用原子操作?此外,我尝试在 OpenIndiana 中使用 gcc 4.6.1,但它不起作用,因为它抱怨一些运行时库。如果有人成功使用过,请告诉我。

The built in atomic operations were introduced in gcc-4.1.2. However, I am using gcc on OpenIndiana which only has gcc 3.4.3. Now my question is how to use atomic operations in gcc 3.4.3? Moreover I have tried to use gcc 4.6.1 in OpenIndiana but it doesnt work, as it complains about some runtime libraries. If anyone has successfully used it, kindly let me know.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

枯寂 2024-12-17 14:18:22

我建议你升级你的 GCC 编译器。 GCC 3 是一个古老的事物。

如果您无法安装较新版本的 GCC,您应该尝试从其源代码编译 GCC 4.6.1 编译器。 (不要忘记在源树之外的构建树中编译它,并且不要忘记所有依赖项)。

您没有提及或解释 GCC 4.6.1 编译失败的原因。它抱怨了哪些运行时库?安装后运行ldconfig了吗?

I would suggest you to upgrade your GCC compiler. A GCC 3 is an ancient thing.

If you cannot install a newer version of GCC, you should try compiling a GCC 4.6.1 compiler from its source code. (don't forget to compile it in a build tree outside of the source tree, and don't forget all the dependencies).

You did not mention or explained why your compilation of GCC 4.6.1 failed. What runtime libraries did it complain about? Did you run ldconfig after installing it?

奢欲 2024-12-17 14:18:22

GCC 具有出色的内联汇编支持,因此您可以使用 __asm 来制作各种原子操作的您自己的变体。然而,它将特定于您的目标平台,因此您需要一些好的宏来切换到正确的版本。

GCC has great inline assembly support, so you could just use __asm to make your own variant of the various atomic ops. It'll be specific to your target platform however, so you'll need some good macros to switch to the right versions.

孤君无依 2024-12-17 14:18:22

要添加到现有答案 - 您是否查看过规范文件额外存储库?我自己从未使用过它,但它似乎提供了 gcc 4.6 编译器包。

To add to existing answers - have you looked at Spec Files Extra Repository? I never used it myself but it seems like it offers gcc 4.6 compiler package.

末が日狂欢 2024-12-17 14:18:22

在 Solaris 上,替代方案可能是回退到 libc atomic_ops(3C) 接口。这些可能会或可能不会内联,但无论您使用哪种编译器,它们都保证始终可用(并且始终以相同的方式运行)。

除此之外,我赞同升级 gcc 和/或获取 SunStudio 12.2 编译器(它们是免版税的;即使您仅将其用于测试,如果与多个编译器一起使用,代码质量往往会提高......)。是的,它也可以在基于 OpenSolaris 的发行版上安装/运行。

On Solaris, the alternative could be to fall back to libc atomic_ops(3C) interfaces. These might or might not get inlined, but they're guaranteed always available (and always behave in the same way) no matter which compiler you use.

Beyond that, I second the suggestion to either upgrade your gcc, and/or to get the SunStudio 12.2 compilers (they're royalty-free; even if you only use it for testing, code quality tends to go up if it's made to work with more than one compiler ...). Yes, it'll install/run on OpenSolaris-based distributions as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文