MacOS下编译live555

  在此记录在MacOS下编译live555库的步骤,以备后用。

  首先在官网下载live555源码

  官网提供了编译方式,使用官网提供的genMakefiles生成需要的平台版本的Makefile文件后进行编译安装不失为一种方法。需要注意的是,执行genMakefiles后会在各个文件夹下生成需要的Makefile文件。所以,如果需要修改Makefile文件的内容,建议先修改对应的平台config.xx文件中,重新执行genMakefiles脚本,防止手动修改Makefile文件时,有漏掉的Makefile文件没有修改。

  根据需要,可以手动修改config.xx文件,比如笔者不需要openssl,就可以在config.xx文件中的COMPILE_OPTS选项中添加-DNO_OPENSSL=1;比如笔者的SDKs版本跟config.xx文件中的不一致,所以需要修改IOS_VERSION的值。

  同时需要注意的是,在MacOS平台下编译live555,需要增加-DNEED_XLOCALE_H编译选项,具体的原因笔者会在下面阐述。

 

  使用官方提供的脚本执行编译安装是比较方便快捷,但是在实际使用中,需要修改的地方很容易被遗漏,比如指定构建版本(-arch armv7 -arch arm64)。所以在使用官方给的构建脚本前建议先仔细阅读确认。但是对于笔者这种对于Makefile并不算熟悉的人来说,这实在是太痛苦了,所以下面我们就来看一看,怎么使用Xcode构建编译live555。(ps:笔者是Xcode小白,因此也无法保证说的全面且正确,只是留档自己的操作记录,如果发现错误,也需要能帮忙斧正)。

  下面以构建MacOS平台下的工程为例,IOS等其他Apple平台下的工程亦可参考此流程。

一、认识live555

  笔者前面写过一篇在windows下编译live555的流程,在其中简单介绍过live555,如果需要的可以点击此处前往,更多信息建议前往官网了解。

二、编译安装四个基础静态库

  使用Xcode创建项目,选择库工程,选择Framework为STL,选择类型为静态库,创建live555基础静态库。

 

   项目创建成功后,删除自动生成的文件,右键文件选择delete,选择Move To Trash;并将live555静态库的文件拷贝到对应的项目中,右键项目,选择Add Files to “xxx”,将除include文件夹外的其他文件导入进来。

 2.1 添加附加包含目录

  点击项目,在Build Settings界面,搜索“Search Paths”,可以找到Search Paths区域,其中Header Search Paths便是附加包含目录选项。

 

   可以在展开项中分别配置Debug和Release的不同附加包含目录,也可以直接配置Header Search Paths使用相同的目录。

 2.2 预处理器定义

  同样在Build Settings界面,搜索“Preprocessor Macros”,可以找到预处理器宏区域。

 

   因为笔者不需要使用openssl,所以增加了宏定义“NO_OPENSSL=1”。

 2.3 编译

  设置完这些就可以编译了,点击编译。

  在编译的时候可能会报如下错误:

  2.3.1 recvfrom未定义

  找到报错的地方,发现recvfrom可以正常跳转到定义。使用man手册查看recvfrom函数的定义,这时候发现,live555中参数六的类型是SOCKLEN_T,其内容的int,而main手册中的参数六类型是socklen_t。修改SOCKLEN_T的值为socklen_t(NetCommon.h)。

  2.3.2 locale_t未定义

  在locale.hh文件中最上面有一块注释提到这个的处理方式。注释中提到,如果平台缺失setlocale()或者newlocale()需要增加的预处理宏。使用man手册,发现这两个函数的存在的,且头文件是<xlocale.h>,命中注释中的最后一个解决方案,增加宏定义“NEED_XLOCALE_H”。

2.4 结果

  点击编译后,你可以在项目文件夹下找不到运行的结果,这是因为编译结果默认放在~/Library/Developer/Xcode/DerivedData/目录下。

三、编译测试工程

  选择mediaServer服务器程序或testRTSPClient客户端构建。

  创建新项目,选择命令行工具。

 

   同样是拷贝文件,添加附加包含目录。对应应用程序,还需要添加库目录和附加依赖项。

 3.1 添加库目录

  同样是在Build Settings下的Search Paths区域,有一个Library Search Paths选项。

 

 3.2 添加附加依赖项

  在Build Phases中,有一个Link Binary With Libraries区域。将依赖的静态库拽拖到此区域即可。

 

posted @ 2023-03-03 14:23  幻cat  阅读(240)  评论(0编辑  收藏  举报