首页 > 系统相关 >windows下编译live555

windows下编译live555

时间:2023-02-21 19:24:18浏览次数:80  
标签:live555 工程 windows openssl 编译 源码 添加 目录

  最近需要编译Live555库,在windows下编译完成后,在此记录。

  笔者的电脑系统是Windows10。

  首先在live555官网下载源码,下载链接是:LIVE555.COM。在该链接下,还有一个音视频文件可供后续测试使用。

  因为live555库依赖openssl,所以我们还行编译安装openssl,上github下载openssl源码,对于openssl的编译安装在源码中的md文件中简述较为详细,故下面对于openssl的安装只会简单讲讲。

 1. 编译安装openssl

  在github上下载openssl的最新版本后(笔者这儿是3.x版本),阅读README.md文件,里面会指引你去阅读对应系统的编译指引(笔者这儿是去阅读NOTES-WINDOWS.md)。

  Windows10下的编译步骤很简单,

  1. 安装Perl(笔者选择了Strawberry Perl)
  2. 安装C complier(笔者电脑已经安装了VS2019)
  3. 安装NASM
  4. 检测上述安装后,对应的路径有没有添加到系统Path。笔者的Strawberry Perl和VS2019在安装后自动就添加了系统环境变量,NASM没有,所以在系统环境变量中单独添加了NASM.exe的所在目录路径(D:\Application\NASM)。
  5. 打开cmd,进入openssl源码目录。使用Perl根据需要的系统版本构建,笔者需要x64的库,所以在这一步运行了 perl Configure VC-WIN64A --prefix=D:\WorkSpace\sourceCode\openssl 。--prefix参数指定了我的openssl库的安装位置。
  6. 执行nmake、nmake test、 nmake install(nmake test可以不执行,一般不会有错误。执行nmake test测试项一般输出yes,有一些因为平台不支持的则会显示skiped)。nmake这一步耗时会特别久,笔者等了半小时。

  执行完成后你会得到如下的文件目录。

 

 2. 编译安装live555

  官方提供的编译方式是通过mak文件,但是对于VS2019而已,操作mak还是太陌生了,所以笔者选择了新建项目来编译运行。

  2.1 源码文件夹介绍

 

 

   live555源码目录进去后会有几个文件夹,其中BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment、WindowsAudioInputDevice是库;mediaServer是服务器主程序,proxyServer是代理服务器,hlsProxy是HLS代理,testProgs是一些测试程序,其中有客户端程序testRTSPClient。

  BasicUsageEnvironment:这个类是UsageEnvironment的一个实现类。

  groupsock:这个库的类封装了网络接口和套接字,需要注意的是,Groupsock封装了发送或接收组播报文的操作。

  liveMedia:这个库定义了以Medium类为根的树状层级类,封装了大量流媒体类型和编码。

  UsageEnvironment:UsageEnvironment和TaskScheduler类用于调度延迟事件、给异步读事件分配句柄、输出错误或警告消息。HashTable类定义了通用哈希表接口,该接口被源码的其他部分使用。这些类是抽象类,需要去继承并实现。

  WindowsAudioInputDevice:这个库是liveMedia中抽象类AudioInputDevice的实现,能在Windows上从输入设备读取PCM音频采样。在后续中没有使用到这个库,故之后不会编译它。

  2.2 编译

  2.2.1 在VS2019中新建一个空白解决方案

 

   2.2.2 创建对应的工程

  库文件创建静态库工程,应用程序创建空项目工程。

  新建的工程名建议与live555的源码目录中一致。笔者在这儿创建了四个静态库工程BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment,还有两个空项目工程mediaServer、testRTSPClient。

  建议先创建库工程编译通过后再创建空项目工程。

 

   2.2.3 删除创建时生成的文件,取消预编译头

 

  2.2.4 拷贝源码

  拷贝源码下的头文件和源文件到新建的工程下,并添加到工程中,以BasicUsageEnvironment为例。

  拷贝文件,如下图。

 

   工程中添加文件,可以只添加项目文件夹下的文件(其中有.cpp文件和.hh文件),include文件夹中的头文件可以不添加到工程文件中,之后会通过配置“附加包含目录”引用。

  2.2.5 配置库工程一些属性

  需要配置”附加包含目录”’、”预处理器定义“等

①不同工程需要的”附加包含目录“如下

 

 

 

 

   (这儿是third目录是笔者的openssl的库文件安装目录)

 

 

   上面是几个库工程各自需要添加的附加包含目录

②右键单独编译单个工程

 

③编译错误,添加预处理器定义

  当编译报错后,根据提示添加对应的预处理器定义,笔者遇到的报错如下:

NO_GETIFADDRS 宏

  提示找不到“ifaddrs.h”文件,因为这个是Linux下才有的文件,添加对应的预处理器定义

 

_CRT_SECURE_NO_WARNINGS 宏

  使用了过时的不安全的函数C4996

_CRT_NONSTDC_NO_DEPRECATE 宏

  找不到“fileno”文件

其他宏

  如果遇到其他的报错,也可以上网搜索,

  2.2.6 编译应用程序

  应用程序项目需要添加“附加包含目录”、“预处理器定义”、“附加库目录”、“附加依赖项”等。需要注意的是openssl的包含,以及windows下的socket调用需要的包含。

  上面编译的静态库生成的库文件会在解决方案目录下的Debug/Release目录中。

①“附加包含目录”

 

   (third目录是笔者的openssl安装目录)

②预处理器定义

  预处理器定义同样可以通过编译报错的提示再进行添加

③“附加库目录”

 

   mediaServer工程的“附加库目录”同上。x64\Debug是笔者的上面四个静态库的编译结果,third\lib是笔者的openssl的静态库路径

④“附加依赖项”

 

   mediaServer工程的“附加依赖项”同上。

   2.2.7 运行

  编译出来的exe程序还不能直接运行,需要把openssl的动态库拷贝到exe的运行目录下。

  testRTSPClient.exe运行需要指定url参数,所以得通过cmd运行

标签:live555,工程,windows,openssl,编译,源码,添加,目录
From: https://www.cnblogs.com/unrealCat/p/17142081.html

相关文章