736 porting mp4v2 总结

来源:互联网 发布:三层网络拓扑图 编辑:程序博客网 时间:2024/05/21 11:09

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这个头的。





0 0
原创粉丝点击