编译ZLMediaKit(win10+msvc2019_x64)

前言

因工作需要,需要ZLMediaKit,为方便抓包分析,最好在windows系统上测试,但使用自己编译的第三方库一直出问题,无法编译通过。本文档记录下win10上的编译过程,供有需要的小伙伴使用

一、需要安装的软件

1.git

下载地址:Git - Downloading Package

这个网上资料很多,就不解释了

2.cmake

Download CMake

这个网上资料也很多,同样不解释了

3.vs2019

这个不解析了

二、下载配置 vcpkg

1.下载vcpkg,下载路径假设为: C:\work\develop, 执行

git clone https://github.com/microsoft/vcpkg

2.下载预编译的 vcpkg 包管理工具

.\vcpkg\bootstrap-vcpkg.bat -disableMetrics

3.编译openssl

.\vcpkg\vcpkg.exe install --triplet=x64-windows-static openssl

4.编译libsrtp,需要启用openssl,需要找到vcpkg_configure_cmake文件,

具体文件地址为C:\work\develop\vcpkg\ports\libsrtp\portfile.cmake

其中C:\work\develop\为vcpkg的目录地址

添加代码,-DENABLE_OPENSSL:BOOL=ON,以上是笔者的文件

然后进行编译:

.\vcpkg\vcpkg.exe install --triplet=x64-windows-static libsrtp

编译完成后,就可以在C:\work\develop\vcpkg\installed\x64-windows-static目录下找到已经编译完成的库

其中C:\work\develop\为vcpkg的目录地址

注:对应命令可能需要执行多次,此过程可能比较长

三、获取ZLMediaKit源码


使用 Git 克隆 ZLMediaKit 的代码并初始化子模块

# 国内用户推荐从 Gitee 下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 初始化子模块 (必须执行)
git submodule update --init

 注:不能通过下载 zip 包的方式下载源码。因为 ZLMediaKit 依赖于第三方代码并通过 Git 子模块的方式管理。

四、编译ZLMediaKit源码

使用也很简单,可以直接引用生成的静态库,也可以直接导入编译链文件

以上两种方法,笔者都编译成功了,以下介绍下后者的使用方法

导入编译链文件,可以直接使用命令行,参考如下

mkdir build
cd build
$VCPKG_CMAKE = 'C:\work\develop\vcpkg\scripts\buildsystems\vcpkg.cmake'
$VCPKG_INSTALL_PATH = 'C:\work\develop\vcpkg\installed\x64-windows-static'$CMAKE_OPTIONS = @("-GCodeBlocks - Ninja""-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo""-DCMAKE_C_COMPILER:STRING=cl.exe""-DCMAKE_CXX_COMPILER:STRING=cl.exe""-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_CMAKE""-DCMAKE_PREFIX_PATH:FILEPATH=$VCPKG_INSTALL_PATH""-DVCPKG_TARGET_TRIPLET:STRING=x86-windows-static""-DENABLE_WEBRTC:BOOL=ON"
)
cmake .. @CMAKE_OPTIONS
cmake --build . --target all

但笔者使用的图形界面操作的

打开cmake-gui

 选择正确的源码目录和编译目录,然后点击Configure

在弹出的对话框中,选择指定编译链文件,如下是笔者的选择

 

在vcpkg目录中,找到对应的vcpkg.cmake文件,以下是笔者的目录

 

过会就可以自己修改下,感兴的选项了,如

生成的库文件,输出目录

其中如下选项需要修改下

1.VCPKG_TARGET_TRIPLET,需要修改为x64-windows-static(与vcpkg的实际目录对应)

2.编译 64 位程序在链接 openssl 时还需要链接 Crypt32.lib 和 ws2_32.lib,

直接添加在链接库后面就可以,以下是笔者添加的

Configure完成后,点击Generate,完成后,会在编译输出目录生成vs项目文件

可以双击这个文件或点击CMake-gui中的Open Project,直接打开VS2019

接下来,切换成Release、编译、安装 

若一切正常,就可以得到所需的文件了

已经编译好的文件下载(Release模式)

后记

因为众所周知的缘故,建议使用vcpkg下载时,使用科学的上网方式,否则可能无法正常下载

因时间所限,未对之前,无法直接使用自己编译的第三方库,若有已经找出原因的小伙伴,希望能留言说明下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338142.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快来预约出行!浙江宁海“网约巴士”走出新思路,跑出市民新满意度

在浙江宁海,一辆辆金旅星辰网约巴士亮眼吸睛,正在成为市民出行的全新方式。 它以灵动、萌态十足的小巴士为载体,依托大数据平台及互联网出行创新理念,将传统公交与动态拼车相结合,从而塑造出更灵活、更便宜、更便捷、更…

单片机原理及应用:中断嵌套

​中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序…

【EI会议征稿通知】2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024)

2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024) 2024 3rd International Conference on Biomedical and Intelligent Systems (IC-BIS 2024) 2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024) 将于2024年4月…

Java项目:115SSM宿舍管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 宿舍管理系统基于SpringSpringMVCMybatis开发,系统主要功能如下: 学生管理班级管理宿舍管理卫生管理维修登记访客管理 二、技术框…

test fuzz-07-模糊测试 libfuzzer

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) test fuzz-01-模糊测试(Fuzz Testing) test fuzz-…

python 工作目录 与 脚本所在目录不一致

工作目录:执行脚本的地方 我以为工作目录会是当前执行脚本的目录位置,但其实不是,例如: 图中红色文件为我执行的脚本文件,但是实际的工作目录是PYTHON LEARNING 可以用如下代码查询当前工作目录: import os…

Spring MVC 的RequestMapping注解

RequestMapping注解 使用说明 作用:用于建立请求URL和处理请求方法之间的对应关系。 出现位置: 类上: 请求 URL的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以…

第86讲:MySQLDump与Binlog日志实现企业级数据备份恢复案例

文章目录 1.企业级数据备份恢复案例描述2.第一环节:周三凌晨进行数据全量备份3.第二环节:模拟周三凌晨备份完之后到下午3点前的业务操作4.第三环节:模拟数据库异常数据丢失导致平台无法使用5.第四环节:发布停服公告全员进入数据恢…

Python(32):字符串转换成列表或元组,列表转换成字典小例子

1、python 两个列表转换成字典 字符串转换成列表 列表转换成字典 column "ID,aes,sm4,sm4_a,email,phone,ssn,military,passport,intelssn,intelpassport,intelmilitary,intelganghui,inteltaitonei,credit_card_short,credit_card_long,job,sm4_cbc,sm4_a_cbc" …

文件夹重命名技巧:如何通过重命名解决文件夹名混乱不规律的问题

在日常生活和工作中,我们经常需要管理大量的文件夹,整理文档、图片等其他类型的文件。随着时间的推移,文件夹名可能会变得混乱和不规律,导致查找和管理变得困难。现在一起来看云炫文件管理器如何让文件名变简洁的操作方法吧。 下…

PandoraNext—一个让你呼吸顺畅的ChatGPT

博客地址 PandoraNext—一个让你呼吸顺畅的ChatGPT-雪饼 (xue6ing.cn)https://xue6ing.cn/archives/pandora--yi-ge-rang-ni-hu-xi-shun-chang-de-chatgpt 项目 项目地址 pandora-next/deploy 项目介绍 支持多种登录方式: 账号/密码 Access Token Session To…

Federated Unlearning for On-Device Recommendation

WSDM 2023 CCF-B Federated Unlearning for On-Device Recommendation 本文工作的主要介绍 本文主要介绍了一种名为FRU(Federated Recommendation Unlearning)的联邦学习框架,用于在设备端的推荐系统中实现用户数据的有效擦除和模型重建。…