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
0
A
回答
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的發行版上安裝/運行。
相關問題
- 1. 如何在Linux上定義/寫這些原子操作GCC
- 2. Redis中的原子操作
- 3. Django中的原子操作?
- 4. CUDA中的原子操作
- 5. ARM中的原子操作
- 6. Sequelize中的原子操作
- 7. 原子操作在C++
- 8. File.Move原子操作
- 9. 非原子操作
- 10. DerbyJS原子操作
- 11. 原子操作 - C
- 12. 何時不使用原子操作?
- 13. 原子操作和原子交易
- 14. 什麼操作都是原子操作
- 15. 使用gcc原子內置函數的原子交換函數
- 16. 在一些非原子操作中使用ConcurrentLinkedQueue
- 17. 在C++中對正常整數使用原子操作
- 18. x86 128位原子操作
- 19. Riak的原子操作?
- 20. 拉推原子操作?
- 21. CUDA原子操作列表
- 22. 寫一個原子操作
- 23. 讓兩個操作原子
- 24. Qt原子操作實現
- 25. window.localStorage上的原子操作
- 26. 揮發和原子操作
- 27. 原子操作實現
- 28. 如何在基於Linux GCC的彙編語言中實現__sync_fetch_and_sub原子操作GCC
- 29. GCC中的浮點操作
- 30. 替代GCC 3.4.3選項-fstack-protector-all?