轉載:http://www.linuxidc.com/Linux/2017-01/139976.htm
如果還在使用較舊版本的Ubuntu,或者是Ubuntu LTS,那么我們是很難體驗新版gcc的。怎么辦呢?我們或許可以自己去編譯用舊版本的gcc去編譯新版本,但比較繁瑣而且坑點較多。如果有現成的包就好啦!
原來,在toolchain/test下已經有打包好的gcc,版本有4.x、5.0、6.0等,用這個PPA升級gcc就可以啦!
首先添加ppa到庫:
1 sudo add-apt-repository ppa:ubuntu-toolchain-r/test
2 sudo apt-get update
如果提示未安裝,還需要先安裝它的包:
1 sudo apt-get install software-properties-common
默認在系統中安裝的是gcc-4.8,但現在都什么年代了萬一有奇怪的更新呢,可以先升級一下,接着就可以選擇安裝gcc-4.9、gcc-5之類的啦!(注意目前gcc-5實際上是5.3.0,沒有5.1或5.2可供選擇)
1 sudo apt-get upgrade //必選 2 sudo apt-get install gcc-4.8 g++-4.8 3 sudo apt-get install gcc-4.9 g++-4.9 4 sudo apt-get install gcc-5 g++-5 //選一個即可;
(非必須)現在可以考慮刷新一下,否則比如locate等命令,是找不到新版本文件所在目錄的:
1 sudo updatedb && sudo ldconfig 2 locate gcc
如果是阿里雲ECS等做了限制的或者是其他奇怪的系統上,你會發現 gcc -v 顯示出來的版本還是gcc-4.8的,因此需要更新一下鏈接:
對應之前選擇更新的gcc版本進行更新鏈接:
gcc 4.8
1 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 48 \ 2 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 \ 3 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-4.8 \ 4 --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-4.8 \ 5 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-4.8
gcc 4.9
1 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 49 \ 2 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 \ 3 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-4.9 \ 4 --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-4.9 \ 5 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-4.9
gcc 5
1 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 53 \ 2 --slave /usr/bin/g++ g++ /usr/bin/g++-5 \ 3 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-5 \ 4 --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-5 \ 5 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-5
更新鏈接不僅僅是為了使用新安裝的gcc版本,更重要的是以后可以隨時切換。上面的命令是分為3塊,每塊對應相應的gcc版本,並不是要一股腦全復制粘貼進控制台運行。要注意反斜杠(\)前要有空格,因為它只提供換行的功能。
於是到這里升級gcc版本就已經完成了。
1 def claShannonEnt(setData): 2 lengthData = len(setData) 3 dicData = {} 4 for cnt in range(lengthData): 5 if setData[cnt,-1] not in dicData.keys(): 6 dicData[setData[cnt,-1]] = 0 7 dicData[setData[cnt,-1]] += 1 8 Hent = 0.0#輸出信息ent 9 for key in dicData.keys(): 10 pData = float(dicData[key])/lengthData 11 Hent -= pData*math.log(pData,2) 12 return Hent