一、前言
现在大多嵌入式系统里的应用都是通过交叉编译工具进行编译,然后才移植应用到开发板上,而开发源代码则是在windows下的sourceinsight 工具进行开发;这样在编译源码的时候就会重复的做windows和虚拟机之前的切换,非常的不便;
笔者前期为了解决linux编译简便性问题,首先尝试了cywin做交叉编译环境,编译出交叉编译工具;但是由于gcc版本或者glibc等版本的问题,导致在cywin下做交叉编译工具十分困难;于是上网找了些资料,总结并实现如图1;就是sourceinsight借助linux系统下的telnet服务器直接做编译的解决方案;
图1 sourceinsight编译解决方案架构图
二、原理
Sourceinsight通过执行脚本实现telnet登录到服务器,并通过脚本执行make命令;
搭建sabma是为了方便将服务器上用户对应的目录做网络磁盘放到本地,并通过sourceinsight进行源码的修改与编写;
CrossTool指我们的目标机的编译工具;
三、实现及配置步骤
1. Samba server配置(用于文件共享,windows可以做网络磁盘)
#setup
Systemservice-->smb
#Vi/etc/samba/smb.conf
在文件的最后加上这些行
[share]
Comment = local
Path = /var/samba/share
Public = yes
Writeable = yes
Ø 重启smb服务
#service smbrestart //重启samba服务
Ø 添加smb用户
Useradd exam1
Passwd exam1
123456
123456
Smbpasswd –aexam1
123456
123456
成功
Service smbrestart
2. 搭建telnet服务器(注:telnet是明文传输,没有经过加密。端口号23)
Ø [root@lyt ~]# mkdir /mnt/cdrom
[root@lyt ~]#mount /dev/cdrom /mnt/cdrom/
[root@lyt ~]# cd/mnt/cdrom/Server/
[root@lytServer]# rpm -qa |grep telnet #查询telnet服务器是否安装
[root@lytServer]# ll telnet* #查询所有与telnet字符有关的软件包
[root@lytServer]# rpm -ivhtelnet-server-0.17-39.el5.i386.rpm #安装telnet服务器
Ø [root@lyt Server]# rpm -qltelnet-server #查询telnet-server软件包的安装位置:
[root@lytServer]# vim /etc/xinetd.d/telnet #编辑该文件,如图:
[root@lytServer]# service xinetd restart #启动telnet服务器。xinetd.d是超级守护进程,telnet服务依赖于xinetd超级守护进程。
Ø 使用非管理员账号登陆:
3. CrossTool安装
这里不介绍交叉编译工具的安装方式了,而是直接在我们原有的交叉编译工具的环境上进行连接调用;
我的linuxserver平台下的交叉编译工具配置及makefile全部放在/home/pos下面;所以在新建的每个用户目录下执行:ln –s /home/pos pos;这样我们建立交叉编译工具连接成功;
4. Sourceinsight项目需创建在网络磁盘上
Ø 映射网络磁盘的方法
打开“我的电脑”-》“工具”-》“映射网络驱动器”-》输入”\\172.23.2.171\user1 “-》输入用户名user1,密码123456;
Ø 然后打开网络驱动器
Ø 网络磁盘目录结构
5. 配置windows下sourceinsight
Ø “选项”->“自定义命令”
Ø 输入命令到运行文本框
输入”E:\hirry\make_telnet\make.bat 172.23.2.171 user1 123456 pos/EFT-POS-P K320P”;
在E:\hirry\make_telnet\下存在三个文件,分别为
Ø 命令注释:
Make.bat是起始脚本
服务器ip:172.23.2.171
用户名:user1
密码:123456
编译目录:pos/EFT-POS-P
编译机型:K320P
6. 运行sourceinsigth的编译
Ø 调出sourceinsight编译工具
调出sourceinsight的”创建”工具,
Ø 编译
点击按钮,即可编译了;编译完成生产的文件,如下图,自动编译效果图