簡體   English   中英

Fedora 22 - 編譯 - __atomic_is_lock_free

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM