当前位置: 首页 > news >正文

消息队列-ubutu22.04环境下安装

消息队列-ubutu22.04环境下安装

安装 wget(一般情况下默认会自带)

sudo apt-get install wget

更换国内软件源

先备份原来的/etc/apt/source.list 文件

udo cp /etc/apt/sources.list /etc/apt/sources.list.bak

添加软件源文件内容,新增以下内容

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main 
restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main 
restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main 
restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main 
restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main 
restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main 
restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main 
restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main 
restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates 
main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports 
main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security 
main restricted universe multiverse

新增完毕后,更新源

sudo apt-get update

安装 lrzsz 传输工具

[zsc@node ~]$ sudo apt-get install lrzsz
[zsc@node ~]$ rz --version
rz (lrzsz) 0.12.20

安装编译器

sudo apt-get install gcc g++

安装项目构建工具 make

sudo apt-get install make

安装调试器

sudo apt-get install gdb

安装 git

[zsc@node ~]$ sudo apt-get install git
[zsc@node ~]$ git --version

安装 cmake

[zsc@node ~]$ sudo apt-get install cmake
[zsc@node ~]$ cmake --version
cmake version 2.8.12.2

安装 Protobuf

安装 Protobuf 依赖库

[zsc@node ~]$ sudo apt-get install autoconf automake libtool curl unzip gzip

• 下载 protobuf 包

wget 
https://github.com/protocolbuffers/protobuf/releases/download/v3.2
0.2/protobuf-all-3.20.2.tar.gz
#若 github 下载过慢,则到下方链接进行下载
wget https://gitee.com/qigezi/bitmq/blob/master/mqthird/protobufall-3.20.2.tar.gz

• 编译安装

# 解压缩
[zsc@node code]$ tar -zxf protobuf-all-3.20.2.tar.gz
# 切换目录
[zsc@node code]$ cd protobuf-3.20.2/
# 如果下载的是具体的某一门语言,不需要执行这一步
[zsc@node protobuf-3.20.2]$ ./autogen.sh
# 配置安装路径 默认安装在 /usr/local 目录,lib、bin 都是分散的
[zsc@node protobuf-3.20.2]$ ./configure
# 开始编译 15 分钟左右
[zsc@node protobuf-3.20.2]$ make
# 开始安装, 需要 root 权限
[zsc@node protobuf-3.20.2]$ sudo make install 
# 确认是否安装成功
[zsc@node protobuf-3.20.2]$ protoc --version
libprotoc 3.20.2

若安装后的库存放于 /usr/local/lib 中, 导致运行程序时默认检索不到,则可以修改/etc/ld.so.conf 文件,添加库文件路径到其中

include /etc/ld.so.conf.d/*.conf
/usr/local/lib/

修改完毕后,加载配置文件

[zsc@node code]$ sudo ldconfig

测试

syntax = "proto3";
package contacts;
message PeopleInfo {string name = 1; int32 age = 2;}
dev@bite:~$ protoc --cpp_out=./ contacts.proto
#include <iostream> 
#include "contacts.pb.h" // 引入编译生成的头文件 
using namespace std; int main() { string people_str; // 序列化{ // .proto 文件声明的 package,通过 protoc 编译后,会为编译生成的
C++代码声明同名的命名空间// 其范围是在.proto 文件中定义的内容contacts::PeopleInfo people; people.set_age(20); people.set_name("张珊"); // 调用序列化方法,将序列化后的二进制序列存入 string 中if (!people.SerializeToString(&people_str)) { cout << "序列化联系人失败." << endl; } // 打印序列化结果cout << "序列化后的 people_str: " << people_str.size() << 
endl; } // 反序列化 { contacts::PeopleInfo people; // 调用反序列化方法,读取 string 中存放的二进制序列,并反序列化
出对象if (!people.ParseFromString(people_str)) { cout << "反序列化出联系人失败." << endl; } // 打印结果cout << "Parse age: " << people.age() << endl;cout << "Parse name: " << people.name() << endl; } return 0;
}
dev@bite:~$ g++ -std=c++11 test.cc contacts.pb.cc -o test -
lprotobuf
dev@bite:~$ ./test 
序列化后的 people_str: 10
Parse age: 20
Parse name: 张珊

安装 Muduo

安装依赖环境

sudo apt-get install libz-dev libboost-all-dev

运行脚本编译安装

[zsc@node muduo-master]$ unzip muduo-master.zip
[zsc@node muduo-master]$ ./build.sh
[zsc@node muduo-master]$ ./build.sh install

验证是否编译安装成功

# 切换编译目录
[zsc@node bin]$ cd ../build/release-cpp11/bin
# 运行 protobuf-demo 服务端
[zsc@node bin]$ ./protobuf_server 9091
# 运行 protobuf-demo 客户端
[zsc@node bin]$ ./protobuf_client 0.0.0.0 9091
20230717 07:51:14.237167Z 23144 INFO pid = 23144 - client.cc:93
20230717 07:51:14.237233Z 23144 INFO 
TcpClient::TcpClient[QueryClient] - connector 0x2417530 - 
TcpClient.cc:69
20230717 07:51:14.237334Z 23144 INFO 
TcpClient::connect[QueryClient] - connecting to 0.0.0.0:9091 - 
TcpClient.cc:107
20230717 07:51:14.237511Z 23144 INFO 127.0.0.1:53368 -> 
127.0.0.1:9091 is UP - client.cc:50
20230717 07:51:14.239109Z 23144 INFO onAnswer:
muduo.Answerid: 1
questioner: "Chen Shuo"
answerer: "blog.csdn.net/Solstice"
solution: "Jump!"
solution: "Win!"- client.cc:75
20230717 07:51:14.239170Z 23144 INFO 127.0.0.1:53368 -> 
127.0.0.1:9091 is DOWN - client.cc:50
20230717 07:51:14.239201Z 23144 INFO 
TcpClient::~TcpClient[QueryClient] - connector 0x2417530 - 
TcpClient.cc:75

安装 SQLite3

[zsc@node protobuf-3.20.2]$ sudo apt-get install sqlite3 
libsqlite3-dev
# 验证是否安装成功
[zsc@node ~]$ sqlite3 --version
3.7.17 2013-05-20 00:56:22 
118a3b35693b134d56ebd780123b7fd6f1497668

安装 Gtest

sudo apt-get install libgtest-dev

编写测试代码

#include<gtest/gtest.h>
int add(int a,int b){return a+b;
} 
TEST(testCase,test1){EXPECT_EQ(add(2,3),5);
} 
int main(int argc,char **argv){testing::InitGoogleTest(&argc,argv);return RUN_ALL_TESTS();
}

编译源文件

[zsc@node ~]$ g++ test_gtest.cc -o gtest -lgtest

运行可执行文件

[zsc@node ~]$ ./gtest 
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from testCase
[ RUN ] testCase.test1
[ OK ] testCase.test1 (0 ms)
[----------] 1 test from testCase (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (1 ms total)
[ PASSED ] 1 test.
http://www.xdnf.cn/news/1470565.html

相关文章:

  • 激光雷达与IMU时间硬件同步与软件同步区分
  • 深度学习之第八课迁移学习(残差网络ResNet)
  • ChartGPT深度体验:AI图表生成工具如何高效实现数据可视化与图表美化?
  • RequestContextFilter介绍
  • 53.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--集成短信发送功能
  • 《C++变量命名与占位:深入探究》
  • SDRAM详细分析—06 存储单元架构和放大器
  • RPC内核细节(转载)
  • 软件设计模式之单例模式
  • 实战:Android 自定义菊花加载框(带超时自动消失)
  • 微型导轨如何实现智能化控制?
  • 9.5 面向对象-原型和原型链
  • 【Linux】Linux 的 cp -a 命令的作用
  • 2025高教社数学建模国赛B题 - 碳化硅外延层厚度的确定(完整参考论文)
  • Overleaf教程+Latex教程
  • Anaconda下载安装及详细配置的保姆级教程【Windows系统】
  • excel里面店铺这一列的数据结构是2C【uniteasone17】这种,我想只保留前面的2C部分,后面的【uniteasone17】不要
  • MySQL 8.0.36 主从复制完整实验
  • S32K3平台ADC 应用说明
  • 无人机RTK模块技术要点与难点
  • GEO排名优化:迈向个性化与语义化搜索时代的智能策略
  • VMwaer虚拟机安装完Centos后无法联网问题
  • SQL时间过滤神器:DATE_SUB+between实战指南,告别硬编码日期!
  • React 组件基础与事件处理
  • 04 - 【HTML】- 常用标签(下篇)
  • Windows环境下实现GitLab与Gitee仓库代码提交隔离
  • 今天一天三面,明天加油DW!!!
  • Linux文件描述符详解
  • baml:为提示工程注入工程化能力的Rust类型安全AI框架详解
  • 【完整源码+数据集+部署教程】广告牌实例分割系统源码和数据集:改进yolo11-dysample