1. 程式人生 > >Linux實用技巧(1)安裝g++版本7與g++多版本共存

Linux實用技巧(1)安裝g++版本7與g++多版本共存

前言

  一些論文的開原始碼在編譯的過程中甚至某些開源庫在編譯過程中會報錯,導致無法使用,查看了原因日誌後定在了由於g++5和g++7版本不相容的緣故。
  為此,博主可謂是傷透了腦筋,畢竟有些論文還是g++5版本,所以版本共存問題成為了本博文的主要內容之一。但是在安裝過程中發現Ubuntu16.04的apt包下沒有g++7,所以本博文安裝g++7也成為主要內容之一。

安裝g++7

  首先我們看看我們的系統自帶的g++版本:

g++ --version

  然後返還結果是:

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free
software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  本次要進行安裝g++7,首先我們一般會考慮用如下命令查詢看看原本的Ubuntu16.04下有沒有g++7的包。

  從圖中可以看見,並沒有g++版本7,所以我們需要另一個新源才能下載。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

  結果輸出如下:

➜  ~  sudo
add-apt-repository ppa:ubuntu-toolchain-r/test [sudo] tqw 的密碼: Toolchain test builds; see https://wiki.ubuntu.com/ToolChain 更多資訊: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test 按回車繼續或者 Ctrl+c 取消新增 gpg: 鑰匙環‘/tmp/tmpnfjlv61w/secring.gpg’已建立 gpg: 鑰匙環‘/tmp/tmpnfjlv61w/pubring.gpg’已建立 gpg: 下載金鑰‘BA9EF27F’,從 hkp 伺服器 keyserver.ubuntu.com gpg: /tmp/tmpnfjlv61w/trustdb.gpg:建立了信任度資料庫 gpg: 金鑰 BA9EF27F:公鑰“Launchpad Toolchain builds”已匯入 gpg: 合計被處理的數量:1 gpg: 已匯入:1 (
RSA: 1) OK

  緊接著,我們更新源包,然後再安裝g++7,命令如下所示:

sudo apt-get update
sudo apt-get install -y g++-7

g++版本共存

  然後我們檢視一下,如今已安裝的g++和gcc的版本。

ls /usr/bin/gcc*
ls /usr/bin/g++*

  結果如下:

➜  ~ ls /usr/bin/gcc*
/usr/bin/gcc    /usr/bin/gcc-ar    /usr/bin/gcc-nm    /usr/bin/gcc-ranlib
/usr/bin/gcc-5  /usr/bin/gcc-ar-5  /usr/bin/gcc-nm-5  /usr/bin/gcc-ranlib-5
/usr/bin/gcc-7  /usr/bin/gcc-ar-7  /usr/bin/gcc-nm-7  /usr/bin/gcc-ranlib-7
➜  ~ ls /usr/bin/g++*
/usr/bin/g++  /usr/bin/g++-5  /usr/bin/g++-7

  緊接著進行設定,讓g++5和g++7可以輸入命令就能切換,另外說明的是安裝g++對應就有安裝gcc,所以gcc也需要配置,不然編譯連結版本不對應會產生問題。命令如下:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50  
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 50

  然後檢視我當前的版本號與切換下一個版本號:

gcc --version
g++ --version

  結果:

➜  ~ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
➜  ~ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  現在我們要做的是把版本5切換到版本7,從提供的列表中輸入選擇號就是切換的版本,博主輸入的是2,如下命令:

sudo update-alternatives --config g++
sudo update-alternatives --config gcc

  結果如下:

➜  ~ sudo update-alternatives --config g++
有 2 個候選項可用於替換 g++ (提供 /usr/bin/g++)。

  選擇       路徑          優先順序  狀態
------------------------------------------------------------
* 0            /usr/bin/g++-5   50        自動模式
  1            /usr/bin/g++-5   50        手動模式
  2            /usr/bin/g++-7   50        手動模式

要維持當前值[*]請按<回車鍵>,或者鍵入選擇的編號:2
update-alternatives: 使用 /usr/bin/g++-7 來在手動模式中提供 /usr/bin/g++ (g++)
➜  ~ sudo update-alternatives --config gcc
有 2 個候選項可用於替換 gcc (提供 /usr/bin/gcc)。

  選擇       路徑          優先順序  狀態
------------------------------------------------------------
* 0            /usr/bin/gcc-5   50        自動模式
  1            /usr/bin/gcc-5   50        手動模式
  2            /usr/bin/gcc-7   50        手動模式

要維持當前值[*]請按<回車鍵>,或者鍵入選擇的編號:2
update-alternatives: 使用 /usr/bin/gcc-7 來在手動模式中提供 /usr/bin/gcc (gcc)

  以上所有命令執行截圖如下所示:

  然後我們檢視一下目前版本,命令如下:

gcc --version
g++ --version

  結果如下:

➜  ~ g++ --version
g++ (Ubuntu 7.3.0-21ubuntu1~16.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

➜  ~ gcc --version
gcc (Ubuntu 7.3.0-21ubuntu1~16.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

相關推薦

Linux實用技巧1安裝g++版本7g++版本共存

前言   一些論文的開原始碼在編譯的過程中甚至某些開源庫在編譯過程中會報錯,導致無法使用,查看了原因日誌後定在了由於g++5和g++7版本不相容的緣故。   為此,博主可謂是傷透了腦筋,畢竟有些論文還

Linux實用指令1:執行級別&找回密碼&幫助指令&檔案目錄類

指令執行級別: 0 :關機 1 :單使用者【找回丟失密碼】 2:多使用者狀態沒有網路服務 3:多使用者狀態有網路服務 4:系統未使用保留給使用者 5:圖形介面 6:系統重啟 常用執行級別是3和5 ,要修改預設的執行級別可改檔案 /etc/inittab的id:5:initdefault:這一行中的數字 命令

一些實用的電腦小技巧1

電腦高手的140個電腦小技巧 1. 重灌Windows XP不需再啟用   如果你需要重灌Windows XP,通常必須重新啟用。事實上只要在第一次啟用時,備份好Windows\System32目錄中的Wpa.dbl檔案,就不用再進行啟用的工作了。在重灌Windows XP後,只需要複製該檔案到上面的目錄

Linux伺服器環境配置1安裝mysql

退出mysql命令目的描述:全新的阿里雲linux伺服器,系統是ubuntu 16.04。需要在上面安裝mysql資料庫。 解決方法:遠端登入,在終端視窗中使用sudo apt-get 指令線上安裝mysql。 具體步驟: 1.輸入以下命令更新系統安裝源: s

JDK安裝--linux系統下x86_64安裝jdk 1.6

    JDK是 Java 語言的軟體開發工具包,主要用於移動裝置、嵌入式裝置上的java應用程式。JDK是整個java開發的核心,它包含了JAVA的執行環境,JAVA工具和JAVA基礎的類庫。

Linux劄記1

工作目錄 ini 生成 工作 root 壓縮文件 lin dev conf tar 命令參數:   -j 代表使用‘bzip2’程序進行文件的壓縮   -J代表調用“xz”程序進行文件的壓縮   -z 用gzip來壓縮/解壓縮文件,加上該選項後可以將檔案文件進行壓縮,但還原

linux 基礎命令1

linux安裝完系統,接下來就可以動手操練一下了首先,我們最應該關心的應該是設備的硬件信息,比如cpu、內存、分區、網卡查看cpu信息命令: lscpu類似的查看cpu信息命令還有:cat /proc/cpuinfo查看內存信息命令: free -h-h是以人類易讀的方式顯示,說白了就是有容量單位其中-/+

Linux學習-實驗樓1

終端 分享 linu image images http .sh 設備 bsp 1.Shell:命令解釋器 2.Linux技能樹 3.X11:X窗口系統,其本身只是工具包及架構協議,Xorg是x架構規範的一個實現體,是實現了x協議規範的一個提供圖形界面的服務器 4.終端本

Linux鞏固記錄1 java項目的編譯和執行

mce frame cati readfile 知識 4.3 sse apach ast 由於要近期使用hadoop等進行相關任務執行,操作linux時候就多了 以前只在linux上配置J2EE項目執行環境,無非配置下jdk,部署tomcat,再通過docker或者jenk

Linux鞏固記錄1 J2EE開發環境搭建及網絡配置

version 環境 com sco 由於 lin spa node 開發環境 由於要近期使用hadoop等進行相關任務執行,操作linux時候就多了 以前只在linux上配置J2EE項目執行環境,無非配置下jdk,部署tomcat,再通過docker或者jenkins自動

學習EXTJS61安裝環境

www. 用法 執行 targe 路徑 繼續 環境 項目 com 1、官方下載地址: extjs6 GPL版:https://www.sencha.com/legal/gpl/ sencha cmd:https://www.sencha.com/

linux學習筆記1

1 linux之父是linus Torvalds(李納斯 托沃滋),1991年他在赫爾辛基大學讀書時自己手動寫了一個電腦操作系統,取名linux,並且公布了源代碼。 C語言之父是Dennis M Ritchie(丹尼斯 裏奇)。 JAVA之父是詹姆斯高斯林,出生在加拿大,他編寫了多處理器版本的unix操

Win10下Docker學習1安裝

ner table 組成 高效率 down 提高 打開 cpu 其他人 Docker簡介 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,

Openstack實踐1安裝部署第一個實例及neutron網絡

ipv6 dir hostname 鏈接 segment 訪問外網 繼續 過程 命名 版權聲明:本文為博主原創文章,歡迎轉載,轉載請註明作者、原文超鏈接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 如何快速部署使用op

zabbix 系列 1安裝

系列 tail log blog pos 安裝 agent sdn zabbix 安裝server http://blog.csdn.net/xiegh2014/article/details/54988548 安裝 agent http://m.blog.csdn

Docker學習1安裝

www. ati https 機制 生產環境 開機啟動 works tab 流行 1. Docker簡介 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全

Linux基本命令1

基本命令 重定向一、箭頭的指向就是數據流的流向,數字說明:0表示標準輸入,1表示標準正確輸出,2表示標準錯誤輸出。2&1>或者2&1>>表示標準正確輸出和標準錯誤輸出一樣。如:cho ‘i am studying’2&1>>/data/boy1、

LAMP架構1-安裝apache

Redhat apache 本篇博客為構築LAMP架構第一步,安裝apache實驗環境:redhat6.5實驗目的:安裝apache準備材料:redhat6.5系統 apache安裝包 實驗步驟:輸入tar xzvf http-2.4.2.tar.gz -C /opttar xzvf apr-1.4.

Linux常用命令1

Linux 常用命令 系統信息 arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理器架構(2) uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬件系統部件 - (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁盤的架構特性 hd

Redis學習筆記1:Redis的說明安裝

sets cti ansi c sde pos AR bsd 學習 ash Redis學習筆記(1):Redis說明的安裝 說明 什麽是Redis REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-v