前言
《鸟哥的Linux私房菜—基础学习篇(第三版)》是一本很不错的Linux使用说明书,也是所有刚开始接触Linux的人一开始最应该看的一本书,作者用自己细腻的心思为Linux的后来者开启了一扇窗。
通过对Linux的熟悉之后,我们可以通过跨平台的QT来增加自己对Linux学习的兴趣。如果对网络编程比较感兴趣的话,可以了解一下Libevent库,可以看看《UNIX环境高级编程》、《UNIX网络编程卷1:套接口API和X/Open传输接口API》、《UNIX网络编程卷2:进程间通信》和《TCP/IP卷1:协议》等书。
如果对硬件比较感兴趣,那么《嵌入式Linux应用开发完全手(韦东山)》和《设备驱动开发详解第二版(宋宝华)》是嵌入式Linux驱动部分两本很好的书。如果对看书觉得学习比较吃力的话,国嵌和韦东山的视频将会是最好的同伴了。建议的学习顺序是国嵌、韦东山的书和视频、宋宝华的书。
gcc、g++、make的安装
作者:(vianowu)
本期关键词: gcc g++ make yum
本期扩展关键词:bridge (桥接) NAT(地址翻译) mirrorlist(镜像列表)
平台: CentOS6.0 VMware Workstation
由于以前用的红帽软件企业版5.0不用自己安装gcc工具,所以我竟然笨笨的以为gcc工具是它自己提供的。看来很可笑。
1.验证方法
在安装好的系统桌面空白处右击,打开终端。在命令行中输入:
#gcc
如果返回信息是:
bash: qt: command not found
则表示没有安装gcc。
如果返回信息是:
gcc: no input files
则表示已安装好gcc了。
2.安装方法
如果没有安装gcc,我们应该如何安装gcc呢?
如果安装的虚拟机镜像是ubuntu或者还是debian的话,那么可以参考《嵌入式Linux应用开发完全手(韦东山)》第2章“嵌入式Linux开发环境构建” 第21页的“apt-get”更新程序列表。如果所安装的虚拟机镜像是CentOS的话,那么就要用yum命令更新列表了。
以下是在CentOS6.0的环境下执行的相关命令。
首先,网上百度的资料有两个方法:第一种是下载gcc的安装包,自己编译。(这个方法本身有问题,因为gcc安装包如果要安装在linux上,也需要编译,但是此时gcc又还没有安装,怎么编译呢?所以陷入了先有鸡还是先有蛋的逻辑混乱问题了。)
第二种方法是:
安装gcc工具
#yum –y install gcc
安装g++工具
#yum –y install gcc-c++
安装make
#yum install make
命令yum updata主要是完成对程序列表的更新,通过对内部的数据库更新来确定哪些程序已经安装、哪些没有安装、哪些有新版本。yum将使用这个数据库来确定怎样安装用户指定的程序,并找到和安装它所依赖的其他程序。
切记要保证能上网啊!
(检查网络图标、ping一下、确认网卡连接方式是桥接还是nat)
3.问题解答
安装方法的实现,需具备以下运行条件:
第一:Linux可以ping通(物理的链路层是通的);
如:
# ping ww.baidu.com
PING ps_other.a.shifen.com (220.181.111.85) 56(84) bytes of data.
64 bytes from 220.181.111.85: icmp_seq=1 ttl=53 time=38.3 ms
64 bytes from 220.181.111.85: icmp_seq=2 ttl=53 time=38.0 ms
64 bytes from 220.181.111.85: icmp_seq=3 ttl=53 time=37.9 ms
这说明了网络的物理连接是通的。但不代表就可以上网获取数据。这个现象犹如有时候在公司可以上QQ聊天,但是打不开网页。因为主机没有连上网页的域名服务器,解析不了网页的IP地址,而腾讯的QQ有自己的域名服务器。
如果没ping通可以先用ifconfig看一下是否配置了Linux的IP地址。
#ifconfig
如果没有的话,可以用以下命令设置IP(其中,eth0 还是eth1根据上面ifconfig输出的信息知道的)
#sudo ifconfig eth0 192.168.1.17
#sudo ifconfig eth0 down
#sudo ifconfig eth0 up
同时查看一下,是否没有连接网络。在网络链接的图标上左击查看是否连接了,没有连接请连上“system eth0”。
第二:Linux可以打开网页(网络是通的);
在我们公司网络的登陆是需要录入用户名和密码的。如果我们的Linux虚拟机的网卡(Network Adapte)是用“bridged(桥接)”方式的话,那么Linux虚拟机的网络登陆用户名需和windowsXP主机的登陆用户名不同,要不然的话,先登陆的(比如说windowsXP)会给后登陆的(Linux)挤下线(不过,这样的影响也不大,只是不能同时上网而已,实在要同时上网就多用一个用户名也可以啦)。
而如果是Linux虚拟机的网卡(Network Adapter)是用“NAT(网络地址翻译网络)”,则可以WindowsXp和Linux同时用一个登陆用户名上网,也可以在我们的主机没有接网线的时候,Linux虚拟机和WindowsXP通过网络通讯。
以下是Bridge和NAT两种网络拓扑结构的简单描述:
NAT网络连接方式下,PC机的IP地址为10.10.32.205时,虚拟机V1和V2的IP地址分别为192.168.112.1和192.168.206.1。两者处于不同网段。此时,PC机为虚拟机的网关,PC和虚拟机对上一层网络只用一个PC的IP地址。这也是韦东山书中所说的不同网段指的意思。所以才可以同时用一个用户名登陆。
PS:判断是否同一网段:将PC机的IP地址与子网掩码“相与”,得到的就是PC机的网段。然后将虚拟机的IP地址和子网掩码“相与”,得到虚拟机的网段。比较两个网段是否相同。
bridged网络连接方式下,PC机的IP地址为10.10.32.205时,虚拟机V1和V2的IP地址分别为10.10.32.101和10.10.32.204。两者处于同一网段。这也是韦东山书中所说的同一网段指的意思。由于各自的IP地址不同,所以需要用不同用户名才能在公司的网络里同时登陆。
扩散思维:
1. 内网IP:http://baike.baidu.com/view/1233066.htm(10.10.XX.XX)(192.168.XX.XX)
2. 路由器:http://baike.baidu.com/view/1360.htm
3. 网线交叉线:http://wenku.baidu.com/view/37f8c33031126edb6f1a10f7.html
那么有的人可能会问怎么设置这个网卡的连接方式呢?在虚拟机的还没有打开的时候,在“Devices”下有一个“Network Adapter(网卡)”的选型。
在单击“Network Adapter(网卡)”选项后,弹出对话框。
在对话框中选择“NAT”,“ok”就可以将桥接方式改为网络转换协议了。但是这样之后,就不能用cuteFTP远程工具和Linux传数据了。(详见第一天)
第三:yum –y install gcc可以开始下载了。
按照以上方式执行的时候,我执行第一步“yum –y install gcc”就出现了“Could not retrieve mirrorlist”不能检索到镜像列表的错误提醒。这时候意识到是镜像列表更新的问题。
登陆网易开源镜像站网站http://mirrors.163.com/,查看“centos使用帮助”http://mirrors.163.com/.help/centos.html。下载对应版本的CentOS6-Base-163.repo 文件。按照网页的提示,在备份好原本的.repo文件之后,将网络下载的.repo文件放Linux虚拟机的/etc/yum.repos.d文件夹中,(如果有需要的话,需将下载的文件名称改为CentOS-Base.repo)然后执行yum makecache。http://mirrors.163.com/.help/CentOS6-Base-163.repo
# wget –c http://www.mirrors.163.com/
#yum makecache
在执行以上命令之后,还是会有可能出现别的错误,它也提示了“suggestion:run yum clean metadata”。
# yum clean metadata
# yum makecache
安装gcc工具
#yum –y install gcc
安装g++工具
#yum –y install gcc-c++
安装make
#yum install make
通过以上步骤就完成了对gcc、g++、make的安装了。根据网易开源镜像站网站http://mirrors.163.com/上的说明,网站会每五个小时更新一次。如果我们需要对软件包进行升级的话,可以执行yum updata的命令。
执行的过程中,切记要让虚拟机上网啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!