0
点赞
收藏
分享

微信扫一扫

Linux(Ubuntu)下编译 Live555最新代码

耶也夜 2022-01-10 阅读 60
ubuntulinux

一、编译环境及准备材料

 

1、编译环境:ubuntu 14.04.1

$ uname -a
Linux ubuntu 4.4.0-128-generic #154~14.04.1-Ubuntu SMP Fri May 25 14:58:51 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

2、live555库

live555官网源码下载路径icon-default.png?t=LBL2http://www.live555.com/liveMedia/

在官网下载源码时,没有提供旧版本的源码,我下载的是最新的发布版 live.2022.01.06.tar.gz

3、openssl 源码

二、编译及问题分析

1、解压代码

下载完成后,将代码压缩包拷贝到 Ubuntu 系统的目录下,用下面的命令解压,解压后在当前目录会生成一个 live 的文件夹。

tar zxvf live.2022.01.06.tar.gz 

2、生成Makefile并编译,报错

进入live目录后,没有Makefile文件,需要自己修改config文件来生成Makefile,我们这里直接使用config.linux来生成Makefile,然后直接make,操作过程如下。

$ cd live
$ ./genMakefiles linux
$ make
...
...
c++ -c -Iinclude -I../UsageEnvironment/include -I../groupsock/include -I/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -DBSD=1   TLSState.cpp
TLSState.cpp: In member function ‘Boolean ServerTLSState::setup(int)’:
TLSState.cpp:209:38: error: ‘SSL_CTX_set_ecdh_auto’ was not declared in this scope
     if (SSL_CTX_set_ecdh_auto(fCtx, 1) != 1) break;
                                      ^
make[1]: *** [TLSState.o] Error 1
make[1]: Leaving directory `/home/samba/live555/live.2022.01.06/live/liveMedia'
make: *** [all] Error 2

3、问题分析

编译的时候直接报错,SSL_CTX_set_ecdh_auto 为声明,从这个函数的命名来看,应该是openssl 的头文件没包含进来,但是看了ubuntu系统是安装了 openssl 的,所以可能是系统里的openssl太旧了。

之后又从网上找了一个 live555 旧版本(2019.03.06)的源码来编译,同样的步骤,可以编译通过。

然后尝试着使用这个命令重新安装 ubuntu openssl,未果

sudo apt-get install openssl

4、问题解决

最后,从 openssl 官网下载新的 openssl 源码,重新编译成库和头文件,再修改live555的config文件,使编译时链接新的 openssl 头文件和库,最终编译通过。

三、从官网下载 openssl 源码

举报

相关推荐

0 条评论