写在前面:
又是一个学期的期末了,总结了一下这个学期学的东西,我吃惊的发现,我竟然还在用老师给我们的RedHat5做开发环境。这怎么能忍,于是我试着自己搭建一个开发环境。
在搭建的过程中我遇到了很多问题,现在我就把这个搭建的过程以及其中遇到的问题分享出来,一方面是希望能帮到其他遇到相同问题的人,另外也希望别人可以指出我在其中操作出错的地方。
操作环境
- VMware Workstation 12.1.0
- VMware下的Deepin系统
需要搭建的环境
- 用于Linux虚拟机与Windows物理机之间通讯和文件传输的SSH服务
- Linux下用于串口通讯以及远程通信的SecureCRT软件
- 用于编译开发板(S3C2440)的交叉编译工具arm-linux-gcc
- 编译用于开发设备驱动的内核文件
- Linux下的QT5
一、搭建SSH服务
尽管VMware软件已经具备了,共享文件夹以及直接拖放传输文件的功能,但我相信很多人还是喜欢通过物理机上的SecureCRT软件以及WinSCP,或者相类似的软件来远程管理你虚拟机里的文件。
原本我是打算直接在Deepin系统里搭建好环境,然后安装好所有需要的工具就不再用Windows下的软件了。但想了想,感觉搭建一个SSH服务也用不了多少时间,就当是留作备用把,把SSH服务也顺带搭建了。
注意:下面的操作需要连接网络
成功操作步骤
1.切换为Root用户
$ sudo su
2.更新apt-get
# apt-get update
3.安装登陆服务端
# apt-get install openssh-server
4.重启SSH服务端
# service ssh start
操作失误时遇到的错误
1.在执行上面第三步时apt-get未更新
- 错误操作:
$ sudo apt-get install openssh-server
- 错误提示:
sudo apt-get install opensshserver正在读取软件包列表...
完成正在分析软件包的依赖关系树正在读取状态信息...
完成现在没有可用的软件包 openssh-server,
但是他被其他的软件包引用了这可能意味着这个缺失的软件包可能已被废弃,或者只能在其他发布源中找到
E:软件包 openssh-server 还没有可供安装的候选者
解决办法:
分析原因是我们的apt-get没有更新,当然如果你的是最新的系统不用更新也行
$ sudo apt-get update
2.在执行上面第二步时未切换至Root用户,或者只使用sudo申请权限
- 错误操作:
$ sudo apt-get update
- 错误提示:
E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
E: 无法对目录 /var/lib/apt/lists/ 加锁
原因:权限不够,导致出错
- 解决办法:
$ sudo su
# apt-get update
或者(此方法笔者未尝试)
$sudo rm /var/lib/apt/lists/lock
3.SSH相关的介绍以及可能会用到的查询命令
- SSH分客户端 openssh-client 和 openssh-server
- 在Linux下如果你只是想登陆别的机器的SSH只需要安装openssh-client,如果要使本机开放SSH服务就需要安装openssh-server。
- Deepin(Deepin基于Ubuntu)有默认安装openssh-client,如果没有则可以通过下面的指令来安装
$ sudo su
# apt-get install openssh-client
- 确认sshserver是否启动,指令如下。如果看到sshd,那说明ssh-server已经启动了。
$ ps -e | grep ssh
- 查看系统监听的服务
$ netstat -ln
- 查看系统当前运行的所有进程
$ ps auxw
- SSH启动、停止与重启
$ sudo /etc/init.d/ssh start
$ sudo /etc/init.d/ssh stop
$ sudo /etc/init.d/ssh restart
或者
$ sudo service sshd start
$ sudo service sshd stop
$ sudo service sshd restart
- 编辑SSH服务配置文件
如果要修改端口,把#Port 22
后面默认的22端口改成别的端口即可。
(注意前面的注释符号,#号要去掉)
$ sudo vi /etc/ssh/sshd.config
- 查看当前SSH端口(如果修改过)
$ grep Port /etc/ssh/sshd.config
二、安装交叉编译工具arm-linux-gcc
由于Deepin和Ubuntu一样,默认是禁用了Root用户的。所以在编译的时候,我们需要通过sudu su
命令来获取Root权限进行操作。那么在配置过程中,我们需要注意的一点就是把普通用户的环境变量一起带过去就行了。
这里使用的是开发板所提供的压缩包,版本是4.4.3。下面来看看怎么在Deepin下安装交叉编译器。
成功操作步骤
1.将压缩包进行解压
对arm-linux-gcc-4.4.3.tar.gz
压缩包进行解压,解压到/
目录下(根目录)。
在根目录下会出现一个opt目录,里面存放的是arm-linux-gcc-4.4.3.tar.gz
解压好的内容。
$ sudo su
# tar -xvzf arm-linux-gcc-4.4.3.tar.gz -C /
2.配置环境变量
这里我们需要配置两个地方的环境变量。一个是当前我们登录的用户的环境变量,另一个则是当我们用命令sudo su
切换为Root用户时的环境变量。
当然,如果你每次在用命令sudo su
都记得在后面加上-
符号,把环境变量也一同切换过来也是可以的,完整命令为sudo su -
。但说句实话,我不确定我每次都能记得住这么做,下面是配置方法。
- 首先,我们得得到刚刚我们解压缩的包所在的路径,这里我打开刚刚解压缩的文件夹里的bin文件夹,通过
pwd
命令得到了完整的路径。
# pwd
/opt/FriendlyARM/toolschain/4.4.3/bin
- 然后,我们用打开 当前用户 环境变量的配置文件进行编辑
# vim /etc/profile
在最后加上一行 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
- 同样的,我们用打开 通过
sudo su
命令切换的Root用户 的环境变量配置文件进行编辑
# vim ~/.bashrc
在最后加上一行 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
注意,上面 export PATH=$PATH:
后的路径一定要与 pwd命令得到的路径
保持一致。
不然系统要提示找不到交叉编译器!
3.使用命令让刚刚配置的文件生效
# source /etc/profile
4.使用命令查看交叉编译器安装成功没有
$ arm-linux-gcc -v
Using built-in specs.
Target: arm-none-linux-gnueabi
......
......
......
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1)
$ sudo su
# arm-linux-gcc -v
Using built-in specs.
Target: arm-none-linux-gnueabi
......
......
......
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1)
如果能够正确的显示交叉编译器的版本号,如上面的gcc version 4.4.3 (ctng-1.6.1)
,说明交叉编译器就已经安装完成了!
操作失误时遇到的错误
1.在编译驱动文件的时候提示说找不到编译工具
- 错误原因
在编译文件的时候经常提示说找不到编译工具,每次都需要手动添加临时的环境变量,关闭shell以后就不能使用。
临时环境变量添加方法:
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
- 解决办法:
实测发现:
sudo su
之后,/etc/profile
和~/.profile
的变量都不会被导入
但是~/.bashrc
会导入
所以:
把环境变量写到 ~/.bashrc
或者:
用sudo su -
命令,让普通用户变成root后还能继承之前的环境变量
三、编译用于开发设备驱动的内核文件
在开发板上的设备驱动开发需要先编译内核文件,这里我就简单说明一下我编译内核文件的过程,以及遇到的相关错误。
成功操作步骤
1.解压内核文件
将内核文件linux-2.6.32.2-mini2440-20140103.tar.gz
文件移动或者复制到路径/opt/FriendlyARM/mini2440
里,如果发现有一些文件夹没有,则请自行手动创建同名的文件夹。
打开终端,执行以下命令:
$ sudo su
# cd /opt/FriendlyARM/mini2440
# tar -xzvf linux-2.6.32.2-mini2440-20140103.tar.gz
这样我们就得到了原始的Linux-2.6.32.2 源代码
2.修改Makefile文件,指定交叉编译变量
(注:笔者打开文件后发现这里已经是修改过的了,所以我就直接跳过这一步了)
首先,我们要使得Linux-2.6.32.2 的缺省目标平台成为ARM 的平台。
因此,修改总目录下的Makefile,第184行附近
# vim /opt/FriendlyARM/mini2440/linux-2.6.32.2/Makefile
原:
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
改为:
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
接下来,要测试一下linux 的编译是否能正常通过。
执行:
# make s3c2410_defconfig
# make
3.编译测试
因为笔者发现内核目录下已经有了官方的配置文件,所以笔者就用Linux官方自带的mini2440配置文件进行配置。配置文件路径如下:/opt/FriendlyARM/mini2440/linux-2.6.32.2/arch/arm/configs/mini2440_defconfig
因此,在/opt/FriendlyARM/mini2440/linux-2.6.32.2/
目录下执行
# make mini2440_defconfig
# make zImage
至此,内核的编译工作已经完成。
操作失误时遇到的错误
1.笔者在编译内核时候遇到的错误大部分都是交叉编译工具安装不正确,或者没有找到交叉编译工具的问题。因此,笔者在这里有几点建议:
1.在执行内核操作和执行编译驱动程序时候都要用`sudo su`命令切换至Root用户进行操作。
2.如果遇到未找到交叉编译工具arm-linux-gcc的问题,请先尝试使用命令`arm-linux-gcc -v`确认当前用户是否能找到交叉编译工具,确认环境变量是否配置好。
2.在编译嵌入式Linux内核时出现了错误提示
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
解决办法:
# vim /opt/FriendlyARM/mini2440/linux-2.6.32.2/kernel/timeconst.pl
把第373行的
if (!defined(@val)) {
改为
if (!@val) {
即可
四、安装Linux下的SecureCRT软件
SecureCRT是很实用的软件,我一直想给Linux下装一个,那样我就不用在频繁的跑去Win环境那边操作了。
安装步骤
1.下载SecureCRT安装包以及破解脚本
- 百度网盘SecureCRT 7.3.3 下载 :http://pan.baidu.com/s/1ntqq6Op
- 在Linux下输入下面的指令,即可下载破解脚本至你当前的位置。
$ wget http://download.boll.me/securecrt_linux_crack.pl
2.安装与破解
- 安装SecureCRT
$ sudo dpkg -i scrt-7.3.3-779.ubuntu13-64.x86_64.deb
- 破解
查看SecureCRT的安装路径
$ whereis SecureCRT
SecureCRT: /usr/bin/SecureCRT
运行perl脚本,得到相关密钥以及破解信息
$ sudo perl securecrt_linux_crack.pl /usr/bin/SecureCRT
License:
Name: ...
Company: ...
Serial Number: ...
License Key: ...
Issue Date: ...
打开SecureCRT软件,输入这些信息即可。
五、安装Linux下的QT5
QT是我在Linux下比较熟悉的开发环境。
安装方法
1.方法1
在命令行直接执行下面的命令即可自动安装。
注意使用这个方法安装需要连接网络,如果中途遇到需要确认的地方,输入y
回车即可。
$ sudo apt-get install qt5-default qt5-qmake g++ qtcreator
2.方法2
第二种方法就是到官方网站下载安装包然后进行安装
选择适合自己操作系统的版本,下载Offine Installers离线包,下载之后得到一个.run文件,我们要让它获得可执行的权限,如果你的.run文件是在桌面上放的,那么就在桌面上点击右键“在终端中打开”,输入命令:
$ sudo chmod a+x qt-opensource-linux-x64-5.4.0.run
qt-opensource-linux-x64-5.4.0.run
是你刚才下载得到的run文件
然后像windows那样点下一步下一步就行了。
参考资料
http://blog.sina.com.cn/s/blog_9a6ff27801015bzz.html
http://blog.csdn.net/q33275971/article/details/39429101
http://www.linuxidc.com/Linux/2015-01/112033.htm
http://www.cnblogs.com/xiazh/archive/2010/08/13/1798844.html
http://blog.csdn.net/you23hai45/article/details/42321639
http://www.2cto.com/os/201207/140023.html
http://blog.csdn.net/doumeile1/article/details/53993337
http://www.linuxdiyf.com/linux/29053.html
http://www.cnblogs.com/exmyth/p/4069763.html
http://blog.csdn.net/tigerjibo/article/details/6933872
http://www.linuxdiyf.com/linux/24289.html
http://blog.csdn.net/thinkerleo1997/article/details/52412042
http://www.epooll.com/archives/774/
http://www.th7.cn/system/lin/201406/61276.shtml
http://www.cnblogs.com/findumars/p/6642425.html
http://blog.csdn.net/Rekols/article/details/43603493
http://blog.csdn.net/Rekols/article/details/43603493