[转]开源库的编译
有的时候我们不免需要使用开源库进行编译,刚从windows转到linux上的时候是有各种的不习惯。所以想说说在开源库在编译的时候需要注意的问题。
在你编译一个开源库的时候总会遇到问题,在写这篇文章之前,我编译了很多开源库,mmseg、sphinx、boost、x264、ffmpeg、memcache、ngeix等。在编译这些库的时候,总会出现各种莫名其妙的问题。有的时候想是不是有什么办法可以解决这些问题,让编译变得简单。很不幸,没有找到好的方式。那出现问题了我们该从那些方面去解决。
1、首先,你要阅读开源软件的主页中的文档,找到编译相关的东西,了解开源库的适用情况注意事项等
2、其次,你要准备编译开源库所需要的工具,比如编译x264的时候需要aysm等。还有编译的依赖库。
3、接着,你需要阅读每个开源库的configure,在这里你可以看到编译时候的选项。这个是相当重要的,因为如果你有些功能没有启用,在你以后的编程中可能就
就会发现,别人的库可以正常,为啥自己的不正常,从源头把这个封杀掉,不要因为这个而造成排查错误的苦难。
4、接下来,你就需要查找是不是交叉编译,如果是的华,一定要注意运行主机的架构也就是arch的重要性,这个将会是非常重要的,如果你则个弄不好,就会造
成架构不统一,一旦其他库连编的时候就会找不到lib等
5、再次,你需要做的就是把相关的include,complie,lib路径全部设置正确,如果是A开源库利用了B开源库,那么B的相关include和lib路径也一定要提供。
6、最后就是进行编译了。复杂的最好写成shell。
如果按照以上步骤基本可以很正常的编译各种开源库。但是在编译过程中可能还会有问题。这个时候我们应该还是基于上面说的进行纠错。
首先检查 configure.log看看问题,这个是你解决编译时错误的第一步,大多数的时候通过这个就可以发现问题的所在。
PS:一般编译不过,其实就那几个点:库和头文件路径、主机CPU架构(x86_64还是i386还是arm)、工具。