ceph分布式文件系统,seastar框架安装过程中的部分错误解决

配置环境的过程中遇到了很多错误,各种搜索发现关于seastar报错的资料很少,列举以下本人安装编译过程中遇到的错误。

源码地址 github.com/ceph/ceph, github/scylladb/seastar
版本ceph15.2.1
依赖:gcc8.3.0, boost_1_67_0, cmake_3.14.5, c-ares-1.15.0, ninja-1.19.0, protobuf-3.5.1, yaml-cpp-0.5.1, fmt-5.0.0, seastar-19.06.0

  1. gcc问题: 构建需要gmp4.2+ mpfr2.4.0+ mpc0.8.0+
    解决: 依赖版本过低,可能是命令contrib/download_prerequisites在./configure --之前执行,也可去直接官网下载gmp-6.1.0.tar.bz2
  2. boost 版本错误(seastar配置 ./configure.py错误)
    解决: cp -rf /usr/local/boost/include/boost /usr/include/,其中/usr/local/boost为安装时–prefix变量的值。
    (cmake -G Ninja可以生成默认的build.ninja文件)
  3. ninja -C build/release -j 96报错未定义引用boost::program_options::,
    未定义引用YAML::load 函数,
    未定义引用boost::test_tools_tt_detail::report_assertion函数,
    未定义引用ares_set_socket_functions函数
    解决1: 修改build/release/build.ninja,在对应程序变量下修改,LINK_LIBRARIES变量的最后加上对应的so,/usr/lib64/libboost_program_options.so.1.67.0
    解决2: yaml默认是安装在/usr/lib目录下了,要cp yaml-cpp相关的so到/usr/lib64目录下否则找不到,然后还是同上面变量的最后加入 /usr/lib64/libyaml-cpp.so.0.5.1
    解决3: 同上变量值最后加入 /usr/lib64/libboost_unit_test_framework.so.1.67.0
    解决4: c-ares默认安装到/usr/lib下了,cp /usr/lib/libcares.* /usr/lib64/,同上变量值最后加入 /usr/lib64/libcares.so.2.3.0
    以上针对编译过程中报错的文件进行配置即可,共73个。
  4. 编译成功,cd build/release/tests/perf,./fstream_perf会报段错误。gdb调试发现报错在main程序的第一行调用构造函数,在初始化列表时,shared_ptr的使用上(set_name方法内substr()函数位置后),具体原因难以分析。。。
    而后重新安装boost1.72.0版本,重新编译报错未定义引用boost::program::,根据以上经验加入/usr/lib64/libboost_system.so.1.72.0仍然报错,百思不得其解之下使用了1.67.0版本的boost_system,成功通过编译。 fstream_perf, future_util_perf, rpc_perf均可成功运行。

最后的问题研究了三四天,中间找了很多帖子找不到类似情形。可能有简便的方法,但试了很多方法,改了/etc/ld.conf的配置不行,在build.ninja里面链接的变量加上目录格式也不行,最后只能使用笨方法逐项配置。
哪位大神有更有效的方法还望分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值