2011-10-16 77 views
0

built in atomic operations是在gcc-4.1.2中引入的。不過,我在OpenIndiana上使用gcc,只有gcc 3.4.3。現在我的問題是如何在gcc 3.4.3中使用原子操作?此外,我試圖在OpenIndiana中使用gcc 4.6.1,但它不能正常工作,因爲它抱怨一些運行時庫。如果有人成功使用它,請讓我知道。在gcc中使用原子操作3.4.3

回答

1

GCC有很好的內聯彙編支持,所以你可以使用__asm來製作你自己的各種原子操作的變體。但是,它會針對您的目標平臺,因此您需要一些好的宏來切換到正確的版本。

2

我建議你升級你的GCC編譯器。 GCC 是一個古老的東西。

如果您無法安裝較新版本的GCC,您應該嘗試編譯源代碼中的GCC 4.6.1編譯器。 (不要忘記在源代碼樹之外的構建樹中編譯它,並且不要忘記所有的依賴關係)。

你沒有提到或解釋爲什麼你的GCC 4.6.1編譯失敗。它抱怨什麼運行時庫?安裝後你運行了ldconfig嗎?

0

要添加到現有的答案 - 你看過Spec Files Extra Repository?我從來沒有用過它,但它似乎提供了gcc 4.6編譯器包。

0

在Solaris上,替代方案可能會回退到libc atomic_ops(3C)接口。這些可能會或可能不會被內聯,但無論您使用哪種編譯器,它們都可以始終保持可用(並始終以相同的方式運行)。

除此之外,我第二次建議升級你的gcc,和/或得到SunStudio 12.2 compilers(他們是免版稅的;即使你只用它進行測試,代碼質量往往會上升,如果它的製作與多個編譯器一起工作...)。是的,它也會在基於OpenSolaris的發行版上安裝/運行。