业余经常折腾Linux开发,Linux下学的比较杂乱,但从编译优势来说Linux下三方库依赖省心,比Win VsStu省心的多。
Java Netty/RPC长连接接触比较多,Sock.io原理上其实没有去太多研究,看文档基于WebSocket 来实现的,但是v3.0版本还加入了asio。Linux C++个人也用Asio来做Tcp长连接,这里记录下LInux编译流程。
GitHub Download
socket.io
https://github.com/socketio/socket.io-client-cpp/releases/tag/3.1.0
asio
https://github.com/chriskohlhoff/asio/tree/230c0d2ae035c5ce1292233fcab03cea0d341264
rapidjson
https://github.com/Tencent/rapidjson/tree/a36110e11874bcf35af854940e0ce910c19a8b49
websocketpp
https://github.com/zaphoyd/websocketpp/tree/56123c87598f8b1dd471be83ca841ceae07f95ba
老版本三方依赖还有boost库,v3.0没有这里就不过多介绍了。解压sockio.client-cpp以后,进入到lib库,这里可以将依赖的三方空文件夹全部都删除。
1. ./rm -rf asio
2. ./rm -rf rapidjson
2. ./rm -rf websocketpp
通过Git重新下载并解压,最后结构目录如下:
回到socket的根目录,创建build编译目录:
1. mkdir build
2. cd build
设置一下CMakeLists.txt,解压CMake文件头文件路径是带有双引号,我这里带有双引号make找不到头文件。这边都删除了,其次如果make时候路径不对,要核对lib下pwd看看路径到底对不对,修改配置文件。
include_directories(${CMAKE_CURRENT_LIST_DIR}"/lib/websocketpp")
比如Asio解压以后,头文件路径,和配置中的路径有差异,需要自己更改,否则make时候会报错 No such file or directory
fatal error: asio/version.hpp: No such file or directory
真实路径要和配置文件中一致:/project/socket.io-client-cpp-3.1.0/lib/asio/include/asio
如果要编译动态lib库,需要修改option(BUILD_SHARED_LIBS "Build the shared library" OFF),改成ON
方便清理cmake编译文件,这里写了个简单的clear.sh
rm -rf ./cmake_install.cmake
rm -rf ./CMakeCache.txt
rm -rf ./CMakeFiles
rm -rf ./Makefile
cmake个人使用版本,编译:
[root@VM-16-13-centos build]# cmake --version
cmake version 3.29.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
cmake ../CMakeLists.txt
make编译
看了下sockio-clietn-cpp代码,都是c++标准,依赖头文件搞对,make编译中i基本不会出现什么问题,一切比较顺利。