L版之后master ceph编译问题总结

  • 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:解决该问题】

    https://stackoverflow.com/questions/47443627/error-inlining-failed-in-call-to-always-inline-mm-aesenc-si128-target-speci

    https://stackoverflow.com/questions/35772562/inlining-failed-in-call-to-always-inline-m128i-mm-cvtepu8-epi32-m128i-t

    https://stackoverflow.com/questions/47587561/gcc-compilation-error-inlining-failed-in-call-to-always-inline-even-after-set

    https://www.mail-archive.com/users@dpdk.org/msg02677.html
     

  • 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> >

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值