live555交叉编译

下载live555最新源码:http://www.live555.com/liveMedia/public/live555-latest.tar.gz

如果是要下载具体的live555版本,比如2023.06.14发布的版本,则可以浏览器输入:http://www.live555.com/liveMedia/public/live.2023.06.14.tar.gz

查看我们交叉编译工具的所在路径。可以看到我们的交叉编译工具名称为aarch64-linux-gnu-XXX

针对我们的交叉编译工具,设置环境变量export PATH=XXX:$PATH

通过命令echo $PATH,查看环境变量是否设置成功:

解压我们下载下来的live.XXX.tar.gz,得到live目录,进入该目录。

修改编译配置文件:

vim config.armlinux

将CROSS_COMPILE这行改为:

CROSS_COMPILE=		aarch64-linux-gnu-

增加一行指定live555的安装路径:

PREFIX=/home/cjc/company/Sunmnet/xiangmu2/trunk/common/live/install

将COMPILE_OPTS这行改为:

COMPILE_OPTS =		$(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_OPENSSL=1 -std=c++11 -fPIC

1.其中如果不添加选项-DNO_OPENSSL=1,则编译可能会报找不到openssl的问题

2.如果不添加选项-std=c++11,则编译可能会报错:

RTSPCommon.cpp: 在函数‘const char* dateHeader()’中:
RTSPCommon.cpp:364:34: 错误: ‘nullptr’在此作用域中尚未声明
   if (gmtime_r(&tt, &time_tm) == nullptr) {

3.如果不添加选项-fPIC,则使用编译出来的live555库时,可能会报错:

relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `stderr@@GLIBC_2.17' can not be used when making a shared object; recompile with -fPIC

修改完config.armlinux,该文件可能如下所示:

保存config.armlinux内容,退出编辑该文件,然后控制台输入命令:

./genMakefiles armlinux
make
make install

我们可以发现生成了live555的可执行文件,头文件和库(静态库)文件了。

如果我们使用live555的库,链接的时候我们得按照如下顺序:

-lliveMedia -lBasicUsageEnvironment -lgroupsock -lUsageEnvironment

否则可能会报错:undefined reference to......

这是因为在给编译器输入源文件,目标文件或者动态库静态库文件时,如果B文件依赖A文件中的内容,那么B文件应该放在A文件的左边。

参考:

LIVE555 交叉编译

分析live555源码第3集:UsageEnvironment_version.hh之live555的版本信息

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值