//20150623 完成mircast工程的编译工作
下面记录一下其中遇到的问题,以便以后查找方便:
初步接触mircast,网上得来的资源作为测试工程,以便为以后提供参考
工程来源:https://github.com/albfan/miraclecast
注:这个版本是c的,还有一个c++的版本,也是albfan这个人发布的,其中c++版本设计到了大量的c++11新特性,而交叉编译器并不支持c11,故放弃。
1、将工程下下来后,作者给出了几个编译方式,autotool、cmake,并且还给出了该工程的部分依赖systemd>=213,glib,gstreamer等
其中systemd这个是linux的系统初始化程序,大概2014之后才发布,属于很新的东西,所有老版本的linux系统基本都不支持。
我下过一堆系统验证,ubuntu15.04版本的才是systemd2.19,像ubuntu14.x,Centos 7.1 ,Fedora 22等均是systemd2.08版本,所以选择了ubuntu15.04
注:使用vm11时,由于对ubuntu15.04还没有对应的vmtools,所有只能使用u盘的方式来把windows下的文件传递过去,稍显麻烦。
2、这里我选择cmake方式编译,之前试过autotool编译,需要我更新比较多的依赖,所有就放弃了,直接使用apt install cmake命令装了一个cmake
按照作者说的执行cmake编译,有些小问题,按照提示来就可解决。
问题一:#include <ststemd/sd-event.h> No such file!
sd-event.h这个文件是systemd2.21版本发布的时候加入的,ubuntu15.04是没有的,所以就要想办法升级systemd2.21或者其他方式,网上关于升级systemd的资料比较少,我也没找到,所以回到作者的文章,他提供了一个解决systemd依赖的方法:https://github.com/albfan/systemd-ubuntu-with-dbus
把这个工程下下来,按照他说的方法编译安装,中间也遇到了很多问题:
问题一:$ sudo debuild -uc -ux -i -rfakeroot ---提示unknow -ux ,所以这里去掉-ux,执行通过
问题二:$ sudo dpkg -i *.deb --提示找不到文件,这里我直接忽略掉,往下执行
问题三:$ sudo add-apt-repository ppa:thopiekar/miraclecast
执行这步的是时候它会检查依赖,这里它提示缺少很多依赖,我直接apt install XXX安装缺少的东西,每安装一次就再把这句执行一遍,直到所有依赖解决,之后的三步就没遇到问题了。
注:这里遇到一个错dpkg-source: error: can’t build with source format ’3.0 (quilt)’: no upstream tarball found at ../shellinabox_2.14.orig.tar.{bz2,gz,lzma,xz},很奇怪,最后执行rm ./debian/source/format,之后就没问题了
3、开始正式编译主工程
cmake成功,make过程中遇到一些错误
问题一:提示缺少readline.h等头文件,这里是readline库的问题,安装readline的库即可,若还提示缺少头文件,则注意修改环境变量。
问题二:提示找不到undefined reference rl_XXX,也就是没链接上readline的库,这里makefile也不好改,所以我就直接make -lreadline,成功!
编译通过:主要生成了两个可执行文件miracle-sinkctl和miracle-wifictl,若找不到生成位置可用locate XXX查找,记得先执行updatedb。
生成的miracle-wifictl和miracle-sinkctl在build/src/ctl/目录下