Luc*_*eli 6 c++ gcc boost fedora
我试图在 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
Run Code Online (Sandbox Code Playgroud)
在我看来,这是 libatomic 的一个问题。gcc 是否可能没有链接到 libatomic?
有人对如何解决这个问题有任何想法吗?
另一个想法是尝试安装-latomic,但我找不到有关的信息。相反,我已经安装了 libatomic。我不知道它们是否相同。
在我看来,这是 libatomic 的一个问题。gcc 是否可能没有链接到 libatomic?
如果您告诉它,它只会链接到 libatomic。
有人对如何解决这个问题有任何想法吗?
链接到 libatomic。
另一个想法是尝试安装-latomic,但我找不到有关的信息。相反,我已经安装了 libatomic。我不知道它们是否相同。
你不能“安装 -latomic”,因为-latomic编译器/链接器选项说链接到 libatomic,你不能“安装链接器选项”,因为它是程序的一个选项,而不是一个包。
你安装 libatomic,然后你链接到它 -latomic
(旁白:我希望修复 GCC,这样你就不需要在-latomic简单的情况下明确使用,只需要在更复杂的情况下使用,请参阅https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65913)
小智 5
我遇到了同样的问题,是的,您确实需要链接 libatomic。这样做的方法是set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")在运行 cmake 之前添加到行:到顶级 CMakeLists.txt 文件。
完整的流程可能如下所示:
git clone https://github.com/supercollider/supercollider.gitcd supercolliderset(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")到顶级 CMakeLists.txtccmake .以配置安装mkdir _build ; cd _buildcmake ..make && <sudo> make install根据您决定安装超级对撞机的位置,您可能需要也可能不需要 sudo。
| 归档时间: |
|
| 查看次数: |
3487 次 |
| 最近记录: |