交叉编译h323plus、ptlib和ffmpeg总结

一般来说,拿到一个源代码想要编译成源码库或者可执行文件,需要经过三个步骤:

①./configure [--选项]

②make

③make install  

1、配置configure

想要让自己的代码在嵌入式板子上跑起来,最重要的也是最开始的步骤,就是在电脑搭建交叉编译环境,也就是说,板子要用到的源码库,都需要用交叉编译工具编译一遍。那么如何指定交叉编译工具呢?这里可以通过在编译的第①步./configure 的后面加上

 --cross-compile=arm-hisiv400-linux 或者--host=arm-hisiv400-linux    来实现。

除此之外,这个源码库能支持什么功能,我们可以通过执行./configure -h来得到我们想要的信息。【以编译h323plus源码库为例】

我们想要用到设定编译安装到指定目录时,可以用--prefix=某某目录指定(注意这个目录必须是绝对路径表示。)

需要指定某某文件夹的目录时,如下:(这些目录在源码编译的时候会用到。)

最重要的一部分,就是选择将哪些功能编译进去,可以通过【--enable-XXX】来指定:

例如:在编译ptlib时想要往源码库里加入音频能力,需要在配置时指定--enable-sdl(花了同伴不少时间得出的结论)。

除此之外,还可以在configure指定CC之类的编译链的名字。

其实就我编译过两三个比较成熟的源码库的小经验来看,通过./configure -h能得到的信息已经非常多了,只需要看懂其中选项的含义,再写一个简单的关于脚本【CONFIGURE.sh,需要766权限】把./configure以及其后面的参数【--啥的】包含进去,下次需要执行./configure的时候就不用打一串选项,直接执行脚本就行了,也方便自己下次回来查看之前配置过哪些内容。

2、make

这一步需要注意的就是,H323plus是依赖于PTLIB的所以我们编译H323plus的时候,必须先编译PTLIB,并且在环境变量中添加PTLIBDIR=/mysamba/H323/H323_Term_Pro/trunk/common/src/ptlib-2_10_9_1和

OPENH323DIR=/mysamba/H323/H323_Term_Pro/trunk/common/src/h323plus-1_26_9

具体的方法有:

①直接export PTLIBDIR=/mysamba/H323/H323_Term_Pro/trunk/common/src/ptlib-2_10_9_1

②把上面这条脚本添加到/etc/profile中,然后source /etc/profile

熟悉的make,源码的makefile不像我们自己写的makefile一样错漏百出。但有时候会因为我们编译源代码自带的simple时用的库是之前配置编译的,不一定适合我们现在的环境,直接拿过来就用,但是有可能编不过,所以我们有时候可以整个源代码都make clean一遍,以减少错误的可能。

但是有时候,还是会出现一些很悬的错误,例如ubuntu明明就安装了SDL1.2dev,安装卸载好几遍,make和make clean也好几遍,但是make的时候还是一直报错:cannot find -lSDL,具体原因不得而知。后来通过把整个源码包卸载了,再解压出来重新开始,但是删除之前记得把我们千辛万苦写的配置脚本【CONFIGURE.sh】备份哦~

3、make install

这个就看我们的configure怎么配置了,当然是./configure --prefix=什么目录就安装到什么目录下呗。

关于这个make install的思想,我们的项目还可以有这么一步:

源码可以放在ubuntu的别的地方,用makefile编译完之后添加一个伪目标install,把最终的执行文件添加到nfs共享目录下。

猜你喜欢

转载自blog.csdn.net/weixin_40728015/article/details/81208914