`
haoningabc
  • 浏览: 1475343 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mt的开源组件的helloworld

    博客分类:
  • nlu
阅读更多

octo-rpc 和 octo-ns

参考https://github.com/Meituan-Dianping/octo-rpc/blob/master/whale/docs/Quick_start.md


https://github.com/Meituan-Dianping/octo-ns/tree/master/sdk/mns-sdk



###########.注意的地方:
#############centos7

这个依赖thrift和muduo,

主要检查thrift的配置 和muduo的配置, 如果是/usr/local/之类的我们都可能要改,
我们thrift装在/usr/local/thrift下
muduo自己装可能有问题,尽量用cmake下的

如果是一堆错误,可能是这个

SET( CMAKE_CXX_FLAGS "-std=c++11 -O3")
octo-ns/sdk/mns-sdk/src/mns_worker.h:144:19: 错误:字段‘wp_conn_info’类型不完全
这种错误是boost错误,用 yum的,不要自己装,会把系统装坏了,再yum也不行了

######octo-ns ###############.
### sdk  参考https://github.com/Meituan-Dianping/octo-ns/tree/master/sdk/mns-sdk
#
git clone https://github.com/Meituan-Dianping/octo-ns

yum install epel-release 
yum install git gcc-c++ cmake
yum install uuid uuid-devel libuuid-devel -y
#在编译example的时候需要uuid

yum install boost-devel zlib-devel log4cplus-devel rapidjson-devel

yum install cmake curl curl-devel openssl openssl-devel  protobuf protobuf-devel -y

muduo用octo来安装 ,boost也yum装 


手动安装thrift-0.8.0 前提是要装好boost和protobuf和openssl
./configure --prefix=/usr/local/thrift    --without-python  --without-csharp --without-erlang --without-go --without-haskell --without-ruby   --without-perl  --without-php --without-php_extension

make
make install


export LANG=en_US.UTF-8
提示错误方便点


###########
./build.sh init的时候
可能出现
muduo的安装有问题
#####错误:
‘off_t’ does not name a type

vim muduo/base/StringPiece.h
#include <sys/types.h>


可能有很多错误,尝试-std=c++11
SET(CMAKE_CXX_FLAGS "-std=c++11 -O3")




############
./build.sh only_lib

如果thrift找不到
CMakeLists.txt
SET(THRIFT_COMPILER "/usr/local/thrift/bin/thrift")
SET(THRIFT_INCLUDE_DIR "/usr/local/thrift/include")
#SET(THRIFT_LIBRARY "/usr/local/thrift/lib")
SET(THRIFT_LIBRARY "/usr/local/thrift/lib/libthrift.a")

这三个变量检查一下

INCLUDE_DIRECTORIES("/usr/local/thrift/include") 
或者INCLUDE_DIRECTORIES("/usr/local/thrift/include/thrift")

LINK_DIRECTORIES("/usr/local/thrift/lib")


#########################octo-rpc 框架 
git clone https://github.com/Meituan-Dianping/octo-rpc

#thrift和zookeeper的位置

octo-rpc/whale
cmake/FindThrift.cmake

#set(THRIFT_INCLUDE_DIR_S /usr/include)
#set(THRIFT_INCLUDE_DIR_S /usr/lib64/)
改成
set(THRIFT_INCLUDE_DIR_S /usr/local/thrift/include)
set(THRIFT_LIB_DIR_S /usr/local/thrift/lib)

find_path(THRIFT_INCLUDE_DIR NAMES thrift/ PATHS ${THRIFT_INCLUDE_DIR_S})
#find_library(THRIFT_LIBRARY NAMES libthrift.a PATHS ${THRIFT_INCLUDE_DIR_S})
find_library(THRIFT_LIBRARY NAMES libthrift.a PATHS ${THRIFT_LIB_DIR_S})



CMakeLists.txt
SET(THRIFT_COMPILER "/usr/local/thrift/bin/thrift")
SET(THRIFT_INCLUDE_DIR "/usr/local/thrift/include")
SET(THRIFT_LIBRARY "/usr/local/thrift/lib")


###########
zookeeper: 3.4.6版本,版本不一样api不一样,
yum install automake autoconf cppunit cppunit-devel  ant -y
yum install libtool libtool-devel -y

没有会报错:possibly undefined macro: AC_PROG_LIBTOOL


ant compile-native



前面加
SET(ZOOKEEPER_INCLUDE_DIR "/opt/mt/setup/zookeeper/build/c/build/include")
SET(ZOOKEEPER_LIBRARY "/opt/mt/setup/zookeeper/build/c/build/lib")
后面加
INCLUDE_DIRECTORIES("/opt/mt/setup/zookeeper/build/c/build/include")
LINK_DIRECTORIES("/opt/mt/setup/zookeeper/build/c/build/lib")


否则可能报错:
/opt/mt/octo-rpc/whale/cthrift/util/zk_client.cc:273:70: error: ‘zoo_get’ was not declared in this scope
     ret = zoo_get(m_zh, path, watch, buff_ptr.get(), buffer_len, stat);


SET(CMAKE_CXX_FLAGS "-std=c++11 -O3")

########错误 htonll ntoll  这个在thrift 0.8.0里面重新定义了,和系统的不一样, 所以注意thrift的include的路径,有的带thrift有的不带thrift,这个容易出错
/data2/octo/mtransport/setup/octo-ns/sg_agent/thrid_party/cthrift/include/cthrift/cthrift_tbinary_protocol.tcc:296:39: error: use
      of undeclared identifier 'htons'
  int16_t net = static_cast<int16_t>((htons)(i16))

这种问题都是include路径不对
检查SET 变量 和
INCLUDE_DIRECTORIES("")
LINK_DIRECTORIES("")


INCLUDE_DIRECTORIES(system ${CMAKE_SOURCE_DIR}/thrid/include/thrift)
要改
INCLUDE_DIRECTORIES(system ${CMAKE_SOURCE_DIR}/thrid/include)
#INCLUDE_DIRECTORIES(system ${CMAKE_SOURCE_DIR}/thrid/include/thrift)
INCLUDE_DIRECTORIES(/usr/local/thrift/include/thrift)

LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/thrid/lib/)
LINK_DIRECTORIES(/usr/local/thrift/lib/)


########错误:
/opt/mt/octo-rpc/whale/cthrift/cthrift_client.cc:105:74: error: no matching function for call to ‘make_pair(std::string&, boost::shared_ptr<meituan_cthrift::CthriftClientWorker>&)’
                                                 sp_cthrift_client_worker_));

https://www.cnblogs.com/zl1991/p/7699510.html
https://codeday.me/bug/20170727/45258.html
这个在c++11 的时候,类似java的泛型变严格了 ,需要去掉严格限制


map_appkey_worker_.insert(
          std::make_pair<string, WorkerWeakPtr>(map_key,sp_cthrift_client_worker_));
改成
//modify by hao
      map_appkey_worker_.insert(
          //std::make_pair<string, WorkerWeakPtr>(map_key,(WorkerWeakPtr)(sp_cthrift_client_worker_)));
          std::make_pair(map_key,sp_cthrift_client_worker_));


##################在编译example的时候,可能找不到thrift的库或者 muduo的库
要仔细看,如果加了 -std=c++11的选项
则mudo的库在
/usr/local/lib/libmuduo_base_cpp11.a
/usr/local/lib/libmuduo_net_cpp11.a


-- MUDUO_BASE_LIBRARY      /usr/local/lib/libmuduo_base_cpp11.a
-- MUDUO_NET_LIBRARY       /usr/local/lib/libmuduo_net_cpp11.a

要修改cmake/FindMuduo.cmake
find_library(MUDUO_LIBRARY NAMES libmuduo_base_cpp11.a PATHS ${MUDUO_LIBRARY_S})

和 CMakeLists.txt中的


#find_library(MUDUO_BASE_LIBRARY libmuduo_base.a)
find_library(MUDUO_BASE_LIBRARY libmuduo_base_cpp11.a)
#find_library(MUDUO_NET_LIBRARY libmuduo_net.a)
find_library(MUDUO_NET_LIBRARY libmuduo_net_cpp11.a)



如果是thrift找不到:
在CMakeLists.txt里面加


INCLUDE_DIRECTORIES(/usr/local/thrift/include/thrift)

LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/thrid/lib/)
LINK_DIRECTORIES(/usr/local/thrift/lib/)
检查
SET(THRIFT_COMPILER "/usr/local/thrift/bin/thrift")
SET(THRIFT_INCLUDE_DIR "/usr/local/thrift/include")
#SET(THRIFT_LIBRARY "/usr/local/thrift/lib")

SET(THRIFT_LIBRARY "/usr/local/thrift/lib/libthrift.a")

#################











































分享到:
评论

相关推荐

    前端开源库-mt-front-util

    虽然`mt-front-util`可能不是专门的状态管理库,但可能包含一些轻量级的状态管理解决方案,帮助开发者组织和同步组件之间的数据。 9. **性能优化**:为了提升页面加载速度和运行效率,`mt-front-util`可能会提供...

    MT4自动交易EA 开源代码!可自己设置交易参数,源代码

    下载后复制到C盘MQL4文件夹里面的ExpertS文件里面,然后打开MT4,在EA交易就能看到本程序,然后右键点击修改,即可编辑

    MT4、MT5数据库访问dll组件fxdbs-demo

    MT4、MT5数据库访问dll组件是我们开发的方便开发人员简单访问数据库的组件dll。此组件采用的ADO模式支持主流数据库(sqlserver mysql access 等等)访问通讯。 MT4、MT5测试脚本是通过连接sqlserver(所以机器上要...

    openwrt-mt7620-master.zip_MT7620A_mt7620_mt7620 git_mt7620n ope

    在OpenWRT中,MT7620的无线驱动是关键组件,用于控制和管理硬件的无线功能。"mt7620a/n"指的是MT7620的两种变体,它们分别对应不同的无线芯片版本,支持不同频段和速度的无线连接。这些驱动程序是用C语言编写的,...

    浙江大学-智能手机软件开发本科课程-2010年夏课件与录像-HelloWorld实验设计.pptx

    《浙江大学智能手机软件开发本科课程——Android HelloWorld实验详解》 在智能手机软件开发领域,Android平台以其开源、灵活的特性,成为众多开发者首选的开发环境。浙江大学开设的智能手机软件开发本科课程,旨在...

    前端开源库-mt-uz

    【前端开源库-mt-uz】是一个专门为"Mt"调用"Uz"设计的前端开源库。在当前数字化时代,前端开发已经成为构建交互式、动态网页应用的关键部分,而开源库则是开发者们共享和利用代码资源的重要平台。 Mt-uz致力于提供一...

    MT8788 ANDROID11 支持MT7663完整patch

    标题中的“MT8788 ANDROID11 支持MT7663完整patch”表明这是一个针对MediaTek MT8788处理器的Android 11系统更新,其中包含了对MT7663无线芯片组的完整补丁支持。这个补丁集可能是由开发者或者社区为了解决兼容性...

    mt4j文档,安装、配置方法

    虽然原文未给出具体的Hello World示例代码,但我们可以假设一个简单的场景创建过程: - 创建一个新的场景。 - 在场景中添加一个基础组件,比如一个矩形或文本组件。 - 设置组件的位置、颜色等属性。 - 在场景中注册...

    MT论坛每日自动签到PHP接口脚本开源

    MT论坛每日自动签到PHP接口脚本开源。随手写了一个单个PHP实现MT论坛每日自动签到的脚本,并将其开源无加密。这个脚本适用于MT论坛的每日自动签到,实现方式是使用PHP+formhash和cookie参数。 使用这个脚本非常简单...

    MT6762_MT6357_MT6371_MT6177M_MT6631_EMMC_LPDDR4X_V0.3.pdf 参考设计

    该参考设计涉及的是基于MT6762、MT6357、MT6371、MT6177M和MT6631等芯片的嵌入式系统硬件架构,主要关注的是移动设备的多媒体、连接性、电源管理及存储解决方案。下面将详细解析这些知识点: 1. **MT6762**:这是一...

    MT25QL256ABA_v2p6p1_mt25qu256开发_MT25Ql256A驱动_mt25ql_MT25QL256ABA

    标题中的"MT25QL256ABA_v2p6p1_mt25qu256开发_MT25Ql256A驱动_mt25ql_MT25QL256ABA"指的是Micron公司的MT25QL256ABA型闪存芯片,这是一个256兆位(32MB)的串行NOR闪存设备。v2p6p1可能代表该芯片的版本号或固件版本...

    MT9700FCLEAG MT9700FFFUBG 视频主控芯片

    - **智能电视**:作为智能电视的核心组件之一,MT9700系列芯片能够支持流畅的视频播放、丰富的应用程序运行以及高效的网络连接等功能。 - **显示器**:在高端显示器中,这些芯片能够提供卓越的画质表现和多样化的...

    MT7620A可用固件_op7620固件_mt7620a华硕固件_MT7620A固件_MT7620A_7620op固件_

    而"OPENWRT固件"则是OpenWrt项目为MT7620A芯片准备的固件镜像,用户可以下载并刷入路由器,以享受开源固件带来的丰富功能和个性化配置。 总的来说,MT7620A可用固件涉及到的主要知识点包括: 1. MediaTek MT7620A...

    boost 1.61 编译好的包 win32 TDM-GCC5.1.0 static 这个才是32位的

    cout &lt;&lt;"Hello world, wudimei.com!"() ; } } int main() { boost::thread thread1(&hello); boost::thread thread2(&hello); boost::thread thread3(&hello); boost::thread thread4(&hello); thread1....

    MT观摩账户管理软件,批量管理MT4与MT5观摩账号软件,MT4、MT5多开软件

    MT观摩账户管理软件,支持MT5与MT5观摩账户批量管理。...2、MT4或MT5多开运行。 3、多窗口排列叠加,软件登录加密。 4、进程批量管理,隐藏进程窗口,MT4或MT5窗口置顶等等功能扩展。 有需要此软件的源码可私信。

    MT7621A+MT7915DA+MT7975DN 硬件参考设计HDK,WIFI6

    MT7621A+MT7915DA+MT7975DN 硬件参考设计HDK,WIFI6 本文将根据提供的文件信息,生成相关的IT知识点。 1. WIFI6技术:WIFI6是最新的一代Wi-Fi标准,具有高速率、低延迟和高容量等特点。它可以提供更快、更可靠的...

    MT7530B_MT7530W_Approval_Datasheet_V0.91_youthest_mt7530_MT7530W

    《MT7530B_MT7530W_Approval_Datasheet_V0.91_youthest_mt7530_MT7530W》这份文档是针对MT7530B和MT7530W交换机的重要技术资料,其中包含了详细的规格参数、功能特性以及审批信息。MT7530B和MT7530W是可能由Youthest...

    MT6816_STM32F030_磁编码器程序编写_MT6816stm32_MT6816_mt6816代

    标题中的“MT6816_STM32F030_磁编码器程序编写_MT6816stm32_MT6816_mt6816代”指的是一个使用STM32F030微控制器(MCU)进行磁编码器数据处理的项目。MT6816可能是该项目或芯片的特定型号,而STM32F030是意法半导体...

Global site tag (gtag.js) - Google Analytics