cmake3.10.2 && RTP/RCTP库安装

本文介绍如何升级至CMake 3.10.2版本,并提供详细的步骤来解决安装过程中可能出现的问题。此外,还介绍了如何使用升级后的CMake编译jthread-1.3.3和jrtplib-3.11.1两个库。

备注:安装cmake3.10.2之前,先升级gcc版本。
https://blog.youkuaiyun.com/hutianyou123/article/details/78133309
一、首先,先下载三个必要的文件:

1.下载 jrtplib-3.11.1 jthread-1.3.3

2.由于需要使用cmake生成linux下的构建文件makefile

查看当前系统中cmake版本:

test@test:~$ cmake --version

cmake version 2.8.7

删除旧版cmake:

test@test:~$ sudo apt-get remove cmake

test@test:~$ cmake -version

bash: /usr/bin/cmake: No such file or directory

下载源码
1、去网址下载http://www.cmake.org/download/

linux/unix版本 cmake-3.10.2.tar.gz

2、把 cmake-3.10.2.tar.gz放到想放到的目录,然后解压,解压命令 tar -zxvf cmake-3.10.2.tar.gz

3、解压后:

cd cmake-3.10.2

4、执行 ./bootstrap

如果出现如下错误提示

Error when bootstrapping CMake Cannot find appropriate C++ compiler on this system Please specify one using environment variable CXX…

则执行

sudo apt-get install build-essential
如果找不到libstdc++.so.6中的GLIBCXX_3.4.18,请执行下面

cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6cc-c++,然后再从新执行步骤4

如果 /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.18’ not found

复制过去,改名

sudo cp /usr/lib64/libstdc++.so.6.0.18 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

行sudo make

6、执行 sudo make install

7、执行 cmake –version

如果输出

cmake version 3.10.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

则证明安装成功

Cmake的安装路径默认在:/usr/local/中

确保已将之前安装的cmake 3.10.2路径添加到系统PATH,可以通过如下命令查看:

test@test:~$ echo $PATH

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/cmake-3.10.2/bin

完毕。此时系统默认的cmake已经是3.10.2版本了,查看:

test@test:~$ cmake --version

cmake version 3.10.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

二、编译jthread-1.3.3 和 jrtplib-3.11.1

1.进入jthread-1.3.3目录,

运行 “cmake  CMakeLists.txt” 配置jthread-1.3.3

接着运行“ make” 编译,编译完运行“make install”安装

2.同样的方法进入jrtplib-3.11.1目录,

运行 “cmake  CMakeLists.txt” 配置jthread-1.3.3

接着运行“ make” 编译,编译完运行“make install”安装

安装完后静态动态库安装到了/usr/local/lib目录下,包括libjrtplib-3.11.1.so和libjthread-1.11.1.so等。头文件           在/usr/local/include目录jrtplib3和jthread目录下。

至此,所有的工作完成,只要进入example目录,执行相应的例程。

<think>我们遇到了一个构建错误:CMake版本过低(需要3.13+,当前为3.10.2)。这是在Ubuntu 18.04系统上构建libubox和ubus时出现的问题,因为Ubuntu 18.04默认的CMake版本是3.10.2。 ### 错误原因分析 1. **CMake版本过低**:libubox和ubus项目要求CMake 3.13或更高版本,而Ubuntu 18.04默认安装的是3.10.22. **构建步骤顺序问题**:在Dockerfile中直接使用git clone和cmake命令,没有检查CMake版本。 ### 解决方案 #### 方法一:升级CMake(推荐) 在安装libubox和ubus之前,先升级CMake。可以通过以下步骤升级到最新稳定版: ```dockerfile # 安装依赖并升级CMake RUN apt-get update && \ apt-get install -y software-properties-common && \ add-apt-repository -y ppa:kitware/ppa && \ apt-get update && \ apt-get install -y cmake # 验证CMake版本 RUN cmake --version # 然后继续构建libubox和ubus RUN git clone https://git.openwrt.org/project/libubox.git && \ git clone https://git.openwrt.org/project/ubus.git && \ cd libubox && cmake . && make && make install && \ cd ../ubus && cmake . && make && make install && \ cd .. && rm -rf libubox ubus && \ mkdir -p /var/run/ubus ``` #### 方法二:源码安装CMake(适用于不能使用PPA的环境) 如果无法使用PPA,可以手动下载并编译安装CMake: ```dockerfile # 安装编译依赖 RUN apt-get update && \ apt-get install -y wget build-essential libssl-dev # 下载并安装CMake RUN wget https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0.tar.gz && \ tar -xzf cmake-3.29.0.tar.gz && \ cd cmake-3.29.0 && \ ./bootstrap && \ make -j$(nproc) && \ make install && \ cd .. && \ rm -rf cmake-3.29.0* # 验证CMake版本 RUN cmake --version # 然后继续构建libubox和ubus(同上) ``` #### 方法三:使用Ubuntu 20.04或更高版本的基础镜像 如果项目允许,更换基础镜像为Ubuntu 20.04(默认CMake 3.16)或更高版本: ```dockerfile FROM ubuntu:20.04 # ... 其他步骤不变 ``` ### 注意事项 1. **PPA源可靠性**:方法一使用Kitware官方PPA,更新快且稳定,但在企业防火墙内可能无法访问。 2. **构建时间**:方法二源码安装CMake会增加构建时间和镜像大小。 3. **向后兼容**:升级CMake后,需要确保其他组件兼容新版本。 ### 验证步骤 在Dockerfile中添加版本验证: ```dockerfile RUN cmake --version | grep -q "3\.1[3-9]" || (echo "CMake版本过低"; exit 1) ``` §§相关问题§§ 1. 如何在不更换基础镜像的情况下,在Ubuntu 18.04中安装指定版本的CMake2. 使用PPA升级CMake可能会遇到哪些安全问题?如何验证PPA的可靠性? 3. 在Docker中编译安装软件时,如何减少镜像层大小? 4. 除了升级CMake,还有哪些方法可以解决CMake版本过低的问题? 5. 如何编写一个Dockerfile步骤来检查并确保CMake版本满足要求? </think>### CMake版本错误分析与解决方案 #### 错误原因深度分析 ```bash CMake Error: CMake 3.13 or higher is required. You are running version 3.10.2 ``` 根本问题在于: 1. **版本兼容性问题** - Ubuntu 18.04 默认仓CMake版本是3.10.2 - libubox/ubus项目要求CMake3.132020年发布) 2. **版本冲突时间线** | 组件 | 发布时间 | 要求CMake | Ubuntu 18.04支持 | |------------|-----------|----------|-----------------| | CMake 3.10 | 2017年 | - | ✔️ 默认安装 | | CMake 3.13 | 2018年 | 必需 | ❌ 需手动安装 | | libubox | 2021年更新| ≥3.13 | ❌ 不兼容 | --- ### 完整解决方案(三种方式) #### 方案一:升级CMake(推荐) ```dockerfile # 添加官方Kitware仓安装最新CMake RUN apt-get update && \ apt-get install -y software-properties-common gnupg && \ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ apt-add-repository &#39;deb https://apt.kitware.com/ubuntu/ bionic main&#39; && \ apt-get update && \ apt-get install -y cmake=3.28.3-0kitware1ubuntu18.04.1 # 验证版本 RUN cmake --version | head -n1 # 应输出 3.28.x # 继续构建步骤 RUN git clone https://git.openwrt.org/project/libubox.git && \ git clone https://git.openwrt.org/project/ubus.git && \ cd libubox && cmake . && make && make install && \ cd ../ubus && cmake . && make && make install && \ cd .. && rm -rf libubox ubus && \ mkdir -p /var/run/ubus ``` #### 方案二:源码编译CMake ```dockerfile # 手动编译安装CMake 3.28 RUN apt-get update && \ apt-get install -y wget build-essential libssl-dev && \ wget https://cmake.org/files/v3.28/cmake-3.28.5.tar.gz && \ tar -xzf cmake-3.28.5.tar.gz && \ cd cmake-3.28.5 && \ ./bootstrap --prefix=/usr && \ make -j$(nproc) && \ make install && \ cd .. && \ rm -rf cmake-3.28.5* # 后续步骤同方案一 ``` #### 方案三:使用兼容分支(无需升级CMake) ```dockerfile # 使用旧版兼容代码2018年分支) RUN git clone -b v2018-10-06 https://git.openwrt.org/project/libubox.git && \ git clone -b v2018-10-06 https://git.openwrt.org/project/ubus.git && \ cd libubox && cmake . && make && make install && \ cd ../ubus && cmake . && make && make install && \ cd .. && rm -rf libubox ubus && \ mkdir -p /var/run/ubus ``` --- ### 验证与调试技巧 1. **版本兼容性检查** ```dockerfile # 在Dockerfile中添加验证层 RUN echo "CMake版本: $(cmake --version | head -n1)" && \ [[ "$(cmake --version | awk &#39;NR==1{print $3}&#39;)" > "3.13" ]] || \ { echo "CMake版本过低"; exit 1; } ``` 2. **构建缓存优化** ```dockerfile # 使用构建缓存加速 COPY --from=cmake_builder /usr/bin/cmake /usr/bin/cmake # 在独立阶段编译CMake FROM ubuntu:18.04 as cmake_builder RUN apt-get update && \ apt-get install -y wget build-essential && \ wget https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5.tar.gz && \ tar -xzf cmake-3.28.5.tar.gz && \ cd cmake-3.28.5 && \ ./bootstrap --prefix=/usr && \ make -j$(nproc) && \ make install ``` --- ### 预防措施 1. **版本需求声明** ```bash # 在项目README添加要求 echo "## 构建要求" >> README.md echo "- CMake3.13 (Ubuntu 18.04需手动安装)" >> README.md ``` 2. **构建前检查脚本** ```dockerfile # 添加预检查脚本 RUN ./check_dependencies.sh ``` `check_dependencies.sh`内容: ```bash #!/bin/bash cmake_ver=$(cmake --version | awk &#39;NR==1{print $3}&#39;) if [[ $(echo "$cmake_ver 3.13" | awk &#39;{print ($1 >= $2)}&#39;) -eq 0 ]]; then echo "错误:需要CMake 3.13+,当前版本 $cmake_ver" exit 1 fi ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值