736 porting mp4v2 总结

本文详细介绍了如何为特定的ARM平台交叉编译mp4v2库,并分享了从C到C++编译器切换的经验,包括解决由此引发的bug以及如何正确使用extern C来确保C++兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、交叉编译mp4v2的库

在以前的《编译生成适合于arm平台使用的mp4v2(学习了交叉编译呀)》中,详细写了mp4v2的编译过程。但是由于换了736平台,其编译器是arm-hisiv100nptl-linux系列的,所以交叉编译的方式是../configure --host=arm-hisiv100nptl-linux

补充:./configure 最关键的三个选项是:
--host=HOST 指定软件运行的系统平台.如果没指定,将运行`config.guess'来检测.一般我们只需指定--host --host 指定的是交叉编译工具链的前缀
--build=BUILD 指定软件包安装的系统平台.如果没有指定,默认值将是'--host'选项的值.
--target=GARGET 指定软件面向(target to)的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定,默认将使用'--host'选项的值.


2、更换编译器

原来736的sample使用全C语言来编写的,因为引入了cpp的库,所以原有sample的makefile文件中指定的编译器要做修改——从arm-hisiv100nptl-linux-gcc变成了arm-hisiv100nptl-linux-g++。 这个以修改导致了大量的bug,基本上由于g++对于数据格式有着更加严格的要求。有一点注意:

	#ifdefined(__cplusplus)||defined(c_plusplus) //跨平台定义方法
	extern "C"{
	#endif
	extern "C"是告诉C++编译器件括号里的东东是按照C的obj文件格式编译的,要连接的话按照C的命名规则去找.C和C++对函数的处理方式是不同的.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。

3、mp4v2里的sps信息和pps信息是不要00000001这个头的。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值