![](/img/trans.png)
[英]Why isn't std::atomic_is_lock_free a static constexpr?
[英]Fedora 22 - compile - __atomic_is_lock_free
我試着在Fedora 22上編譯一個軟件(SuperCollider)但我遇到了一個問題:
libsupernova.a(server.cpp.o): In function `std::atomic<boost::lockfree::detail::tagged_index>::is_lock_free() const':
/usr/include/c++/5.1.1/atomic:212: undefined reference to `__atomic_is_lock_free'
collect2: error: ld returned 1 exit status
server/supernova/CMakeFiles/supernova.dir/build.make:96: recipe for target 'server/supernova/supernova' failed
make[2]: *** [server/supernova/supernova] Error 1
CMakeFiles/Makefile2:3383: recipe for target 'server/supernova/CMakeFiles/supernova.dir/all' failed
make[1]: *** [server/supernova/CMakeFiles/supernova.dir/all] Error 2
Makefile:146: recipe for target 'all' failed
make: *** [all] Error 2
在我看來,這是libatomic的一個問題。 是否有可能gcc沒有鏈接到libatomic?
有人對如何解決這個問題有任何想法嗎?
另一個想法是嘗試安裝-latomic,但我無法找到有關的信息。 相反,我已經安裝了libatomic。 我不知道他們是否一樣。
我遇到了同樣的問題,是的,你確實需要鏈接libatomic。 執行此操作的方法是添加到行:在運行cmake之前set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
設置為頂級CMakeLists.txt文件。
完整流程可能如下所示:
git clone https://github.com/supercollider/supercollider.git
cd supercollider
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
到頂級CMakeLists.txt ccmake .
配置安裝 mkdir _build ; cd _build
cmake ..
make && <sudo> make install
根據您決定安裝supercollider的位置,您可能需要或不需要sudo。
在我看來,這是libatomic的一個問題。 是否有可能gcc沒有鏈接到libatomic?
如果你告訴它,它只鏈接到libatomic。
有人對如何解決這個問題有任何想法嗎?
鏈接到libatomic。
另一個想法是嘗試安裝-latomic,但我無法找到有關的信息。 相反,我已經安裝了libatomic。 我不知道他們是否一樣。
你不能“安裝-latomic”因為-latomic
是鏈接到libatomic的編譯器/鏈接器選項,你不能“安裝鏈接器選項”,因為它是程序的選項,而不是包。
你安裝libatomic,然后用-latomic
鏈接到它
( -latomic
:我希望修復GCC,這樣你就不需要明確地使用-latomic
來處理簡單的情況,只有更復雜的情況,請參閱https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65913 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.