首先,在CentOS下安装gcc4.8.2需要先安装GMP,MPFR 和 MPC 三个包。
安装包下载地址
从http://gcc.gnu.org/下载gcc安装包 gcc-4.8.2.tar.gz
从ftp://ftp.gnu.org/gnu/gmp/下载GMP安装包 gmp-5.1.3 .tar.bz2
从http://ftp.gnu.org/gnu/mpfr/下载MPFR安装包 mpfr-3.1.2.tar.gz
从http://www.cise.ufl.edu/mirrors/GNU/pub/gnu/mpc下载MPC安装包 mpc-1.0.1.tar.gz
安装步骤如下:
把GMP,MPFR 和 MPC 三个包分别解压到单独的文件中。
安装gmp
[root@liuyanmin ~]# cd gmp-5.1.3
[root@liuyanmin gmp-5.1.3]# ./configure
[root@liuyanmin gmp-5.1.3]# make
[root@liuyanmin gmp-5.1.3]# make check
这一步是必要的,用来查看有没有文件不匹配或缺失,在最后提示,到时注意看有没有Erro之类的提示,如果没有说明安装正常了. 本人安装过程中没有出现错误,如果网友编译过程中出了问题记得告诉我.
[root@liuyanmin gmp-5.1.3]# make install
安装编译后的软件,完成了安装过程
有必要说明程序的头文件(.h)和库文件(lib*)的位置,本次安装会安装在 /usr/local/include 和 /usr/local/lib . 这个对后面安装mpfr很有作用.
安装mpfr
[root@liuyanmin ~]# cd mpfr-3.1.2
[root@liuyanmin mpfr-3.1.2]# ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
[root@liuyanmin mpfr-3.1.2]# make
[root@liuyanmin mpfr-3.1.2]# make check
在每步操作中一定要看看有没有错误,本人编译时没有错误。
[root@liuyanmin gmp-5.1.3]# make install
安装MPC
[root@liuyanmin ~]# cd mpc-1.0.1
[root@liuyanmin mpc-1.0.1]# ./configure
[root@liuyanmin mpc-1.0.1]# make
[root@liuyanmin mpc-1.0.1]# make check
[root@liuyanmin mpc-1.0.1]# make install
上边安装成功后,还要配置lib目录,因为gcc编译时需要
[root@liuyanmin mpc-1.0.1]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
这次就可以安装gcc了
创建gcc安装目录/usr/gcc482
解压gcc4.8.2并进入解压后的目录,打开命令终端,执行
[root@liuyanmin gcc4.8.2]#
./configure --prefix=/usr/gcc482 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
[root@liuyanmin gcc4.8.2]# make
[root@liuyanmin gcc4.8.2]# make install
现在gcc4.8.2安装完成了,但是gcc4.8.2的环境变量还没有设置,系统中使用的还是旧版的gcc。
刚刚我们把gcc4.8.2安装在/usr/gcc482下,如果不知道的话可以通过下边这步查找一下。
确定新安装的GCC的路径,可以先updatedb,然后locate gcc-4.8 |tail找一下。
查看gcc4.8.2信息如下
ls /usr/gcc482/bin | grep gcc
设置使用新版的gcc4.8.2的方法,我现在有两种。
方法一:
添加gcc4.8.2到可选项:
update-alternatives --install /usr/bin/gcc gcc /usr/gcc482/bin/i686-pc-linux-gnu-gcc 40
倒数第三个参数是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了
这是我从网上找到的方法,可我试了,但gcc --v时显示的还是旧版本update-alternatives --display gcc 又显示正确,试想gcc482我们是安装了,可它的执行路径和lib并没有在系统中设置,而gcc --v肯定会从执行路径中寻找,因此它显示的结果是旧版的gcc又很正常了,对于这种做法目前我也很疑惑,哪位知道失败原因的,希望各位大虾多多指教啊!
方法二:
[root@liuym usr]# mkdir /usr/gcc447backup/
[root@liuym usr]# mv /usr/bin/{gcc,g++} /usr/gcc447backup
[root@liuym usr]# ln -s /usr/gcc482/bin/gcc /usr/bin/gcc
[root@liuym usr]# ln -s /usr/gcc482/bin/g++ /usr/bin/g++
[root@liuym usr]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/gcc482/libexec/gcc/i686-pc-linux-gnu/4.8.2/lto-wrapper
目标:i686-pc-linux-gnu
配置为:./configure --prefix=/usr/gcc482 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
线程模型:posix
gcc 版本 4.8.2 (GCC)
这是我刚安装好系统之后的截图。在终端可以发现只有一个lo连接而没有eth0,而在右上角,联网图标下面的提示上显示了“No network device availabal”。由此判断,是系统没有合适的驱动所致。
查看设备
使用以下命令查看网卡信息:
lspci | grep -i eth
显示的结果为:
02:00.0 Ethernet controller: Atheros Communications Inc. AR8161 Gigabit Ethernet (rev 10)
在CentOS论坛上找了一下,发现了一则帖子。在#6的回复里面,我找到了可行的解决方案。
之前试过了无数次,简直是个噩梦。。。
在那则回复里面,作者要我们去这里下载驱动。
我这里直接给出文件的链接,大家可以用wget或者其他下载工具直接下载:
http://fichiers.touslesdrivers.com/34178/alx-linux-v2.0.0.6.rar
下载下来的文件名是alx-linux-v2.0.0.6.rar
根据您在看这则文章时使用的操作系统:
Windows系统
建议安装7Z这个压缩软件,他可以将文件夹或多个文件打包并压缩为tar.gz/bz2格式,(当然也支持rar格式,而且和rar不同,他是免费软件。。。这里当成是对7Z的推广好了)当然也支持将tar.gz/bz2等文件解压缩。
这样一来,如果你下载的是rar文件,也可以将其解压后重新压缩为tar格式,然后用U盘之类的存储器转移到Linux下进行编译安装。不然,Linux一般是解压不了rar文件的,但是网上大部分的压缩文件都是rar格式了。
Linux系统
可能是有其他网卡,所以还能联网,还能看到这篇文章。或者就是两台Linux主机,用其中一台可以上网的来下载。
下载到tar之类的格式的不用担心,下载到rar格式的,用yum搜索一下rar好了。
啊,悲剧了,下载来的文件是rar格式的。我是在windows下下载的,所以用7Z解压再压缩,然后用手机转移过去(因为没有U盘Orz...)
编译和安装
编译前提
你要安装了kernel-headers 和 kernel-devel。当然,还有gcc。
不过悲剧的是,CentOS默认是没有安装好gcc的。如果你不确定是否有安装gcc的话,请直接在终端里输入gcc,如果没有安装,就会提示bash: gcc: comman not found。
要是真的悲剧了,gcc没有安装怎么办?我是插入一张bin DVD,然后更改了yum的配置文件,让yum的软件源变成本地的光盘。这个方法有机会以后再介绍。
要安装kernel-headers 和 kernel-devel,你需要以下两条命令:
sudo yum install kernel-headers 2 sudo yum install kernel-devel
以上两个只需要安装一次,以后编译其他驱动就不用再安装了。
编译
将下载下来的压缩包解压后,出现一个目录(alx-linux-v2.0.0.6),我们进入这个目录之后,直接执行make就可以了。
之后,我们再进入当前目录的src目录,用ls可以发现,有一个叫做alx.ko的文件,这个就是我们要用的网卡驱动了。
安装驱动
执行一下pwd,我们应该是在xxxx/alx-linux-v2.0.0.6/src目录下。接下来,我们只要再把那个alx.ko复制到指定目录下就可以了。
这里直接上图:
只要按照上面显示的步骤来,马上就会有效果了——请看此图右上角,从原来的红叉叉变成绿圈圈了。
命令:
sudo mkdir /lib/modules/$(uname -r)/kernrl/net/wireled #这里的$(uname -r)会替换成系统当前的版本号 2 sudo cp alx.ko /lib/modules/$(uname -r)/kernrl/net/wireled #将驱动文件拷贝到指定位置 3 sudo depmod -a #检测模块的相依性,lib下驱动文件改变后最好执行一下 4 sudo modprobe alx #在默认位置上加载了alx.ko
至于lsmod | grep alx是为了查看该驱动是加载成功。如果该驱动没有被加载的话,那么就什么都不显示。
在上图,执行modprobe之前和之后有明显不同。
显示:alx 90654 0 说明该驱动成功被载入了。
重启之后,该驱动也还在。所以,不用像那个论坛里那个人写的那么麻烦了。
解决问题
好了,用不管是用ifconfig看,还是用右上角的图标看,问题似乎都完全解决了。接下来,就随你怎么配置网卡了。我是配置了拨号连接。
后记
@H_346_301@ifconfig -a #这样就可以发现eth0了(eth0是第一个,如果你有其他网卡,就会有eth1,2,3...) 2 sudo ifconfig eth0 up #根据上面看到的替换eth0,一般是eth0
要想编译驱动之类的东西,必须先安装kernel-headers 和 kernel-devel