最近在交叉编译的过程中遇到了不少问题,有些问题我觉得很值得记录一下。
譬如,我手头上有几个源码包需要编译,它们都是某个软件源码包的依赖包:
ncurses-5.9
libical-2.0.0
libffi-3.0.13
zlib-1.2.11
glib-2.40.0
dbus-1.9.4
初看一下,没什么问题,于是乎我们开始解压,然后.configure--make---make install
可是,当你辛辛苦苦地编译完了以后,却发现,有些依赖包的版本不对,出现了某某so的version要大于xx,或者某某依赖于xxx,但未能发现该依赖。
这时候,你肯定得回过头来确定一下到底自己需要什么版本的源码包了。
譬如,ncurses-5.9,和你此刻的arm板子上的Linux系统依赖是否搭配,有时候,5.8和5.9依赖的系统库,它就是不一样,它就是不能匹配,你要是硬要使用,可能程序都跑不起来,可是当你换了其他版本的时候,其他的依赖问题又出现了,譬如最让人烦心的就是glib库,因为glib库做了很多的平台兼容处理,你如果要编译另外一个glib库放到系统中去用,到时候,整个系统里面的库文件换来换去的,把系统都给换崩了。
有点儿啰嗦,但是都是必须要说的。
好了,接下来,我们回归我们的话题,在上面的问题出现以后,我们需要查看系统当中现有的依赖包的版本号,然后,我们对应去下载源码包,再去编译。
那么怎么看?
Ubuntu下最经典的命令就是:
dpkg -L 包名 //能查看