-
run-make-check.sh报错
-- we are x84_64
-- Performing Test not_arch_x32
-- Performing Test not_arch_x32 - Failed
-- we are x32; no yasm
for
you
-- Performing Test COMPILER_SUPPORTS_CXX17
-- Performing Test COMPILER_SUPPORTS_CXX17 - Failed
CMake Error at src/CMakeLists.txt:
149
(message):
The compiler /usr/bin/c++ has no C++
17
support.
解决: 1. 社区已经考虑到Centos下的gcc、cmake版本比较低,不支持C++17,因此在install-deps.sh中处理: 1. yum install centos-release-scl 2. yum install devtoolset-7 3. scl enable devtoolset-7 bash 这样,就可以使用高版本的cmake和gcc了。也就是使用的开发环境,不影响机器上的运行gcc、cmake版本。 2. 参考: ...
-
Dpdk编译报错
In file included from /opt/rh/devtoolset-
6
/root/usr/lib/gcc/x86_64-redhat-linux/
6.3
.
1
/include/x86intrin.h:
39
:
0
,
from /root/work/source/submit/ceph/build/src/dpdk/include/rte_vect.h:
56
,
from /root/work/source/submit/ceph/build/src/dpdk/include/rte_memcpy.h:
46
,
from /root/work/source/submit/ceph/build/src/dpdk/include/rte_mempool.h:
79
,
from env.c:
41
:
/root/work/source/submit/ceph/build/src/dpdk/include/rte_memcpy.h: In function
'rte_memcpy_generic'
:
/opt/rh/devtoolset-
6
/root/usr/lib/gcc/x86_64-redhat-linux/
6.3
.
1
/include/tmmintrin.h:
185
:
1
: error: inlining failed in call to always_inline
'_mm_alignr_epi8'
: target specific option mismatch
_mm_alignr_epi8(__m128i __X, __m128i __Y,
const
int
__N)
Google了半天,很多人都有遇到dpdk的这个问题,但是没看到解决方法,有人说是vm的问题。没有深入的找这个解决办法。
就准备直接关闭dpdk的编译,但是一看buidl/CMakeCache.txt发现是关的: WITH_DPDK:BOOL=OFF,这就怪异了,关了DPDK的编译,为什么还会编译,肯定还有其他地方直接就编译了。
于是去ceph源码顶级目录下看CMakeLists.txt找DPDK,也没什么,也是判断with_dpdk,然后再处理的。
继续搜一下spdk,是打开的,然后会build_spdk,这个build_spdk是在cmake/modules/BuildSPDK.cmake文件里,然后在文件一开始就看到了如下代码:
if(NOT TARGET dpdk-ext)
include(BuildDPDK)
build_dpdk()
endif()
原来是在这里打开了dpdk的编译,这下就清楚了,直接关闭spdk的编译项:
在CMakeLists.cc中将
if(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64|aarch64")分支下原来的ON,改成OFF
option(WITH_SPDK "Enable SPDK" OFF)
重新再build目录下
[root@ygt build]# cmake -DBOOST_J=8 -DWITH_CCACHE=ON ..尝试解决dpdk编译问题的链接:【TODO:解决该问题】
-
Leveldb报错
../../lib/libos.a(LevelDBStore.cc.o): In function `LevelDBStore::repair(std::ostream&)':
/root/work/source/submit/ceph/src/kv/LevelDBStore.cc:
208
: undefined reference to `leveldb::RepairDB(std::__cxx11::basic_string<
char
, std::char_traits<
char
>, std::allocator<
char
> >
L版之后master ceph编译问题总结
最新推荐文章于 2024-07-05 18:04:28 发布
在尝试编译L版Ceph时遇到了DPDK和SPDK的编译问题,尽管WITH_DPDK已设为OFF,但在BuildSPDK.cmake中仍开启DPDK编译。通过修改CMakeLists.txt关闭SPDK编译解决。此外,还遇到了Leveldb报错,怀疑是版本过低导致,但更新至1.12版本问题依然存在。解决方案尚未明确。
摘要由CSDN通过智能技术生成