一般来说,拿到一个源代码想要编译成源码库或者可执行文件,需要经过三个步骤:
①./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共享目录下。