交叉编译live555源代码

一、下载live555源码http://live555.com/liveMedia/public/ ,我用的是红色框框里的这套源码。

二、解压压缩包,进入live目录

三、交叉编译时,需要通过config(arm版本是config.armlinux)生成相应的Makefile,最后完成交叉编译。(这里建议备份一份config文件)

四、打开config.armlinux文件,修改编译方式和增加库的保存路径。其他地方都先不用动。

五、将这些目录下的makefile.head文件的PREFIX修改为PREFIX = /home/zkx/live_arm(你的保存路径)

六、执行 ./genMakefiles armlinux,(每次修改了armlinux,都必须重新执行./genMakefiles armlinux 以生成新的makefile文件)此时可能会出现找不到openssl/ssl.h这个头文件,解决办法有二:

①如果你不需要用到ssl,可以在config.armlinux文件中加入-DNO_OPENSSL=1,再去进行后续操作。

 

②交叉编译openssl源码。

1,https://www.openssl.org/source/old/3.0/openssl-3.0.10.tar.gz  我下载的是3.0.10版本
2,进入openssl-3.0.10目录中,创建了一个install目录,执行./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=arm-linux-gnueabihf-

 

--prefix=$(pwd)/install   指的是库生成后存放的位置,我这里在当前路径下创建了一个install。
--cross-compile-prefix=arm-linux-gnueabihf-   指的是交叉编译的方式
no-asm:  在交叉编译过程中不使用汇编代码代码加速编译过程;

shared: 生成动态连接库。

no-async: 交叉编译工具链没有提供GNU C的ucontext库

3,执行make,发现如下图的错误,将makefile文件中的两个 -m64删除,重新make

4,执行make install ,将在你指定的位置保存ssl库文件。切记要看清楚这每个目录的名字!

5,至此,openssl库生成完毕,然后我将install这个目录拷贝到live555源码下的目录下,并改名为ssl_result_ubuntu。你也可以不这么干,但是后面路径要设置对。

6,修改CPMPILES_OPTS,增加LOPLAGS,执行ssl和crypto库的路径(也可通过软链接去实现)

7,重新./genMakefiles armlinux  ;  make   ;基本都会遇到test问题
编辑一下这个文件 /live/BasicUsageEnvironment/BasicTaskScheduler.cpp(190行左右)。

8,重新./genMakefiles armlinux  ;  make   ;
9,make install 后就可以在你指定的路径下生成live555库文件。

至此结束,错误的地方敬请指教~~~~~~~~~~~~

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Live555是一款开源的多媒体流服务器,支持实时流媒体的传输。下面是部分Live555源代码的分析: 1. MediaSession类 MediaSession类是Live555中最核心的类之一,它表示了一个媒体会话,包括了媒体流的传输协议、媒体编码格式、传输方式等信息。MediaSession类中的成员变量包括: - fServerMediaSession:代表了一个媒体服务器会话,负责提供媒体流的传输。 - fSubsessions:代表了一个或多个媒体流的传输会话,可以是RTP/RTCP、HTTP/RTSP等协议。 - fSdpLines:代表了SDP协议中的信息,可以是媒体流的编码格式、传输方式等信息。 MediaSession类中的核心方法包括: - createNew:用于创建一个新的媒体会话。 - addSubsession:用于添加一个媒体流的传输会话。 - generateSdpDescription:用于生成SDP协议描述信息。 - startStream:用于开始媒体流的传输。 - pauseStream:用于暂停媒体流的传输。 - seekStream:用于跳转媒体流的传输。 2. MediaSubsession类 MediaSubsession类表示了一个媒体流的传输会话,包括了媒体流的传输协议、媒体编码格式、传输方式等信息。MediaSubsession类中的成员变量包括: - fParentSession:代表了父级MediaSession类的实例。 - fRTPSink:代表了RTP数据的发送器。 - fRTCPInstance:代表了RTCP数据的发送器。 - fTrackNumber:代表了媒体流的轨道编号。 - fCodecName:代表了媒体流的编码格式。 - fMediumName:代表了媒体流的传输方式。 MediaSubsession类中的核心方法包括: - initiate:用于初始化媒体流的传输。 - startStream:用于开始媒体流的传输。 - pauseStream:用于暂停媒体流的传输。 - seekStream:用于跳转媒体流的传输。 3. RTSPServer类 RTSPServer类是Live555中实现RTSP协议的服务器类。RTSPServer类中的成员变量包括: - fServerMediaSession:代表了一个媒体服务器会话,负责提供媒体流的传输。 - fHTTPServerPort:代表了HTTP服务器的端口号。 - fRTSPServerPort:代表了RTSP服务器的端口号。 RTSPServer类中的核心方法包括: - createNew:用于创建一个新的RTSP服务器。 - start:用于启动RTSP服务器。 - stop:用于停止RTSP服务器。 - incomingConnectionHandler:用于处理RTSP客户端的连接请求。 - handleCmd_DESCRIBE:用于处理DESCRIBE命令。 - handleCmd_SETUP:用于处理SETUP命令。 - handleCmd_PLAY:用于处理PLAY命令。 - handleCmd_PAUSE:用于处理PAUSE命令。 - handleCmd_TEARDOWN:用于处理TEARDOWN命令。 以上是Live555源代码的部分分析,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值