消息队列-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.