为了搭建能够编译readled.cpp/alarm.cpp,并且运行ysdb数据库的ubuntu环境,再次开启了虚拟机和ubuntu的安装之旅。
搭建linux编译环境过程是曲折的,但是远没有达到痛苦的程度,毕竟遇到的所有问题在网上都是可以搜到答案的。
1.首先在windows系统上安装VMware,我在电脑的硬盘上找到了两个版本VMware7.0,VMware11.0。我开始尝试安装VMware7.0,这个是破解版,不用注册,安装非常顺利。
2.VMware7.0上新建虚拟机命名为ubuntu。设置文件保存路径,一路默认,处理器选1个,内存分配512M,硬盘30G,非常重要的一个设置屏幕分辨率要设置为600×800,这样在桌面上看着虚拟机大小合适。
3.安装的镜像我不太相信硬盘上保存的ubuntu10.04版本,因为之前出现过ubuntu10.04安装不成功。我选择安装ubuntu12.04,半小时后安装完成,感觉非常顺利。
4.然后是建共享目录,在网上搜到一个教程,先在虚拟机的菜单栏依次点击VM-settings-options-shared folders,设置folder sharing为always enabled,在folders中添加共享目录,点击ok。之后启动虚拟机,在VM菜单中点击install VMware tools。
之后发现提示不能安装VMware tools。为此折腾了好久,问题的根源在于VMware7.0版本过低跟ubuntu12.04不太好搭配。网上有些解决办法,但是我想了一下,这可能只是出现的第一个问题,以后再出现问题还是麻烦,于是我有两个选择,
一个是安装VMware11.0,再装ubuntu12.04;另一个是安装VMware7.0,再装ubuntu10.04。本来我的初衷就是安装ubuntu10.04,只是担心他的操作系统镜像有问题。看来这次是绕不过这个镜像的问题了。硬盘上的镜像不能用,要在网上下载一个。于是漫长的搜索之路
经过摸索之后,得到了一个非常好的结果,找到了ubuntu的官网,发现上边各种版本的系统镜像都有,于是选择ubuntu-10.04.4-desktop-i386。再次启动vmware7.0,新建虚拟机,再装ubuntu10.04,非常顺利,安装VMware tool,还是不成功,根据之前在网上得到的信息经验,
关闭虚拟机,设置虚拟机的硬盘,软盘,光驱位auto模式,重启ubuntu系统,再次安装VMware tool,成功!之后设置共享文件夹操作比较简单,没有坑,至此算是有了一个好的开始。
5.拷贝ysdb文件夹到/home/usr目录,根据ysdb操作说明文件上提到的,修改/etc/ld.so.conf文件,再次ldconfig,运行./ysdb可执行文件,成功运行!非常顺利。需要注意的是有几个链接库需要在网上下载拷贝到ysdb/bin目录下,这都是血的教训。总之这一步很顺利
6.安装libxml2.7.1,这个安装包硬盘中有,所以按照步骤安装下来就可以,也很顺利,只是编译之前要把头文件的目录更改到/usr/local/include/libxml下。
7.安装g++编译器,unbuntu自带gcc4.4编译器,单独安装g++编译若是跟gcc编译器版本不一样会出现问题。网上的答案提示很简单apt-get install build-essential。似乎只要安装了build-essential问题就可以迎刃而解
于是我尝试了一下,提示错误,可能是虚拟机没有连上外网,于是,验证了一下,结果显示外网链接很好,那是哪里的问题呢,在这个问题上折腾了两天,最终我的推测是ubuntu10.04版本过低,上边某个文件上保存的安装包的网址需要更新,我推测出了问题,但是不知道方法,
试了很多方法,有些我觉得太麻烦,没有尝试,有些无效。最后终于在网上找到一篇文章,把以下这10个网址更新到/apt/sources.list文件中,再执行apt-get update,就可以
deb http://old-releases.ubuntu.com/ubuntu lucid main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu lucid-proposed main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu lucid main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu lucid-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse
这个方法和我的想法非常契合,于是试了一下,再次执行apt-get install build-essential时候,有了进展,但还是出现了错误
执行apt-get install -f
再次执行apt-get install build-essential,成功!
8.尝试用gcc编译readled.cpp,发现gcc命令还不太会用,最后终于发现了-I,-L,-l的作用,执行gcc readled.cpp -I/home/usr/ysdb/include -L/home/usr/ysdb/bin -lysdbLib -lxml2 -o readled
运行成功!致此,编译环境搭建完成,收货很多。