我尝试在 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。执行此操作的方法是添加到该行:set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
在运行 cmake 之前复制到顶层 CMakeLists.txt 文件。
完整的流程可能如下所示:
git clone https://github.com/supercollider/supercollider.git
cd supercollider
- add
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
到顶级 CMakeLists.txt
- run
ccmake .
配置安装
mkdir _build ; cd _build
cmake ..
make && <sudo> make install
您可能需要也可能不需要 sudo,具体取决于您决定安装 supercollider 的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)