杂记:cmake版本更新/boost编译/ZMQ框架安装
Ubuntu Cmake版本更新
cmake通过bin生效,改变版本时通过软链接指向另一版本即可:
从cmake官网下载
cmake-3.29.2.tar.gz
,然后解压:1
sudo tar -xvzf cmake-3.29.2.tar.gz
配置编译和安装:
1
2
3sudo ./configure
sudo make -j8
sudo make install
此时cmake --version
有可能输出新版本,也有可能保留旧版本,关键是/usr/bin/cmake
的版本是什么,这里需要建立一个软链接,不要使用相对路径创建:
1
2sudo rm /usr/bin/cmake
sudo ln -s /home/user/Desktop/cmake-3.29.2/bin/cmake /usr/bin/cmake
ubuntu下boost安装/版本更新
查看版本: 1
dpkg -S /usr/include/boost/version.hpp
卸载: 1
sudo apt-get autoremove libboost1.74-dev
网上一些教程最推荐的是直接使用软件源安装: 1
2sudo apt-get update
sudo apt-get install libboost-all-dev
但是如果软件源有版本冲突,而且比较旧,容易安装到旧版本的boost,这里可以使用自己编译安装,首先确认boost安装版本,这里主要考虑的是编译工具问题,例如我的gcc version 12.2.0
是装不了boost
1.87的,选择了1.79,从官网下载tar包:
先下载boost的一些重要依赖,主要是编译工具和一些基础依赖,没有这些依赖,boost的一些组件不会被编译:
1
2sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev
解压: 1
sudo tar -xvzf boost_1_79_0.tar.gz
执行b2安装程序编译和安装,因为要创建文件夹,需要sudo权限:
1
2
3
4sudo ./bootstrap.sh --with-libraries=all --with-toolset=gcc
# ./bootstrap.sh
sudo ./b2
sudo ./b2 install
如果是Windows环境,无论使用msvc还是gcc(mingw),只需要运行bootstrap.bat,然后执行b2.exe toolset=gcc stage
或者b2.exe toolset=msvc stage
即可,下载目录即是头文件目录,stage/lib即是库目录;
另一种不推荐的方法是从源码而不是压缩包,下载源码还需要检查子模块仓库,否则得到的boost也是不完整的:
1
2
3git submodule
git submodule init
git submodule update
当出现版本错误,可以通过以下方式来删除现有的库: 1
2
3
4
5sudo ./b2 install #如果仍保留了编译文件
sudo rm -rf /usr/local/include/boost # 删除头文件
sudo rm -rf /usr/local/lib/libboost* # 删除库文件
sudo rm -rf /usr/local/lib/cmake/Boost* # 删除可能存在的 cmake 配置文件
sudo rm -rf /usr/local/lib/pkgconfig/boost* # 删除可能存在的 pkgconfig 文件
ZeroMQ安装
ZeroMQ是一个网络通讯框架,可能存在一些项目中的子模块,采用软件源或者deb方法安装可能导致下载不全,这里选择从源码编译安装:
克隆仓库地址: 1
git clone https://github.com/zeromq/libzmq.git
然后两个选择,使用自动脚本安装: 1
2./autogen.sh
./configure && make check
这个不是必须的,或者使用cmake安装,根据https://github.com/zeromq/libzmq/blob/master/INSTALL:
对于windows,需要-G选项: 1
2cmake -G "NMake Makefiles" -D WITH_PERF_TOOL=OFF -D ZMQ_BUILD_TESTS=OFF
-D ENABLE_CPACK=OFF -D CMAKE_BUILD_TYPE=Release
对于linux,无需-G指定编译器,使用: 1
cmake -D WITH_PERF_TOOL=OFF -D ZMQ_BUILD_TESTS=OFF -D ENABLE_CPACK=OFF -D CMAKE_BUILD_TYPE=Release
1
sudo make install
cppzmq安装
克隆: 1
git clone https://gitcode.com/gh_mirrors/cp/cppzmq.git
cppzmq不是一个安装库,如果是普通使用,只需要包含头文件即可,将hpp复制到ZeroMQ中:
1
2cd cppzmq-master
sudo cp ./zmq.hpp /usr/local/include
但如果cmake需要使用(find_package),那就需要使用cmake安装到头文件搜索路径:
1
2
3mkdir build
cmake .. -DCPPZMQ_BUILD_TESTS=OFF #禁用测试用例
sudo make install
Q&A
cppzmq执行sudo make install
时出现: 1
2
3
4
5
6
7/home/user/Desktop/cppzmq-master/tests/buffer.cpp:1:10: fatal error: catch2/catch_all.hpp: 没有那个文件或目录
1 | #include <catch2/catch_all.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [tests/CMakeFiles/unit_tests.dir/build.make:76:tests/CMakeFiles/unit_tests.dir/buffer.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:126:tests/CMakeFiles/unit_tests.dir/all] 错误 2
make: *** [Makefile:146:all] 错误 2cmake .. -DCPPZMQ_BUILD_TESTS=OFF
;