gcc 4 8 3安裝,gdb 7 6安裝

2022-03-25 10:58:19 字數 4291 閱讀 7676

gdb用法:

附:gdb之tui: ncurses (wget

gdb依賴包:termcap-1.3.1.tar.gz

gcc編譯會有點繁瑣些,下面說一下編譯步驟:

如果新安裝的centos缺少編譯環境,必須先安裝舊版本的gcc, 然後再進行自舉編譯,舊版安裝方法見在上面介紹過了(用yum),不再細述。

命令:yum install gcc gcc-c++(gcc-c++不可少,不然後面編譯報錯)

提醒,現在centos7.0已經發布出來了,如果你centos版本是7.0,那麼yum安裝的gcc/gcc-c++版本本身就已經是4.8.2了。

tar jxvf gcc-4.8.3.tar.bz2

cd gcc-4.8.3;

./contrib/download_prerequisites

3,建立新目錄,並執行configure命令,產生makefile

mkdir ../build-4.8.3

cd ../build-4.8.3

../gcc-4.8.3/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --prefix= /usr/local/gcc-4.8.3/

說明:本編譯引數中使用--prefix指定了gcc的新安裝目錄。

4),編譯gcc 4.8.3 

這個過程需要很久,你可以新增-j引數進行多核心編譯,提高編譯速度,比如伺服器是40核心的可以使用-j40做引數:

make -j40 

5),安裝gcc 4.8.3

make install

6),更新libstdc++.so.6,更新這個庫可以讓程式快速搜尋到這個新版本庫,其實你也可以更改環境變數來完成。

cp /usr/lib64

紅字部分在不同平台上有所不同

7), 調整libstdc++.so.6的優先順序,

可以使用ln -sf鏈結,也可以使用alternatives,這裡推薦使用alternative

ln方法:

ln -sf /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6

alternatives方法:

alternatives --install  舊庫全名 庫名 新庫全名 優先順序

alternatives --install /usr/lib64/libstdc++.so.6.0.13 libstdc++.so.6 /usr/lib64/libstdc++.so.6.0.13 39

alternatives --install /usr/lib64/libstdc++.so.6.0.13 libstdc++.so.6 /usr/lib64/libstdc++.so.6.0.19 40

附:alternatives 常用引數:--install; --remove; --config; --display

檢查是否使用新版庫:

alternatives --display libstdc++.so.6

libstdc++.so.6 - 狀態是自動。

鏈結目前指向 /usr/lib64/libstdc++.so.6.0.19

/usr/lib64/libstdc++.so.6.0.13 - 優先度 39

/usr/lib64/libstdc++.so.6.0.19 - 優先度 40

當前「最佳」版本是 /usr/lib64/libstdc++.so.6.0.19

7),檢查gcc,g++版本

[root@localhost bin]# /usr/bin/gcc --version

以上面的顯示資訊可知,gcc有兩套,現在我們要使用其中新版本。

操作命令同libstdc++.so.6,這裡推薦alternatives命令,可以更簡潔方便得在gcc不同版本之間做更換。

以gcc為例:

一種方法是用alternatives:

alternatives --install /usr/bin/gcc  gcc /usr/bin/gcc 39

alternatives --install /usr/bin/gcc  gcc /usr/local/gcc-4.8.3/bin/gcc 40

檢查版本:

[root@localhost bin]# alternatives --display gcc

gcc - 狀態是手工。

鏈結目前指向 /usr/local/gcc-4.8.3/bin/gcc

/usr/local/gcc-4.8.3/bin/gcc - 優先度 40

/usr/bin/gcc - 優先度 39

當前「最佳」版本是 /usr/local/gcc-4.8.3/bin/gcc。

另起視窗,檢查版本:

# g++ --version

g++ (gcc) 4.8.3 

8)環境變數設定

如果你安裝時使用了--prefix指定了自定義目錄,這裡顯示的版本仍然是系統預設的老版本。你需要設定環境變數:path,

ld_library_path,將<--prefix>目錄加到系統預設目錄前,

具體做法是:/etc/profile最後加:

export path=/usr/local/gcc-4.8.3/bin:<.....>:$path;

export ld_library_path=/usr/local/gcc-4.8.3/lib:/usr/local/gcc-4.8.3/lib64

即可。注意gcc的路徑順序,把你想要版本的gcc路徑放在前面,預設路徑放在後面。

重啟系統,檢查確認版本是否ok。

q&a:

a: 這是因為系統的gcc版本過低引起的;而系統安裝的最新版本為gcc4.8.1,這個新版本gcc需要glibcxx_3.4.15或更高版本。

libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fdd34fd6000)

libm.so.6 => /lib64/libm.so.6 (0x00007fdd34d51000)

libgcc_s.so.1 => /opt/gcc/lib64/libgcc_s.so.1 (0x00007fdd34b3b000)

libc.so.6 => /lib64/libc.so.6 (0x00007fdd347a7000)

#>strings /usr/lib64/libstdc++.so.6.0.13 | grep glib

glibcxx_3.4.10

glibcxx_3.4.11

glibcxx_3.4.12

glibcxx_3.4.13

glibc_2.2.5

glibc_2.3

glibc_2.4

glibc_2.3.2

確實沒有看到glibcxx_3.4.15

再觀察系統lib與lib64下stdc++的檔案資訊發現,64位目錄下的版本libstdc++.so.6.0.13,而32位目錄下卻是libstdc++.so.6.0.18,

如下圖:

lrwxrwxrwx 1 root root      28 7月   8 10:16 /usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.18

-rwxr-xr-x 1 root root 6472115 7月   8 10:16 /usr/lib/libstdc++.so.6.0.18

[root@localhost signaldistservermc]# ll /usr/lib64/libstdc++.so.6*

lrwxrwxrwx  1 root root      19 7月   8 12:42 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13

-rwxr-xr-x. 1 root root  989840 11月 22 2013 /usr/lib64/libstdc++.so.6.0.13

解決方案:

從上面的情況分析看,是因為ace在尋找依賴庫的時候找到了/usr/lib64/libstdc++.so.6,但這個版本比較低為libstdc++.so.6.0.13版本,找不到介面所以報錯。

可以更改庫的軟鏈結,使其指向高版本庫:ln -sf /usr/lib64/libstdc++.so.6 /usr/lib/libstdc++.so.6.0.18

gcc 4 8 3交叉編譯

1.環境 ubuntu 16.04 2.獲取 wget mirrors.ustc.edu.cn gnu gcc gcc 4.8.3 gcc 4.8.3.tar.bz2 3.解壓 tar xvf gcc 4.8.3.tar.bz2 4.切換目錄 cd gcc 4.8.3 contrib downloa...

linux交叉編譯gcc4 8 3

1.環境 ubuntu 16.04 2.獲取 wget mirrors.ustc.edu.cn gnu gcc gcc 4.8.3 gcc 4.8.3.tar.bz2 3.解壓 tar xvf gcc 4.8.3.tar.bz2 4.切換目錄 cd gcc 4.8.3 contrib downloa...

centos7編譯安裝gcc

centos7 的yum 只能將 gcc公升級到 4.9 的版本 但是從gcc官網看 已經到 7.2 的版本了,因為想自己編譯乙個最新版的linux核心,所以對gcc要求有點高,於是自己動手編譯gcc。gcc v 檢視原來的版本 直接來乾貨 1 需要明白的 2 明白.configure 後面的引數配...