[教學] 安裝舊版本的g++ 4.0

開源程式原罪-版本問題

多少英雄好漢在這裡陽萎

而且看來我是陽萎的其中一個

在投降前,至少把我花了數小時數千腦細胞的成果寫出來

環境:ubuntu 11.04

欲安裝:g++4.0.1

.

Round 1:

ubuntu的懶人們第一個想到的一定是apt-get

很抱歉! apt-get install g++後發現只剩下4.4~4.6的版本!!!

而4.0.1至少是2005年以前的東西!


為什麼隔了7年,連sprintf的參數都會不同!

你以為我們就這樣放棄嗎?

我try了幾個稍微少見的Server

(修改sudo vim /etc/apt/sources.list 在後面加上可能的Server)

或是google g++ 4.0.1 deb

都找不到,宣告放棄。

.

Round 2:

沒有批次檔,我們下在原始碼自己來

然後這才是惡夢的開始

先去http://ftp.gnu.org/gnu/gcc/gcc-4.0.1/下載你要的版本

例如我需要

gcc-core-4.0.1.tar.bz2

gcc-g++-4.0.1.tar.bz2

解壓縮到同一個目錄

你以為直接./configure嗎?

馬上送你一個
Building in the source directory is not supported in this release.

其實這句話的意思是,出去 現在

你只要去隔壁資料夾做configure不要干擾的原本的code就好

所以打

mkdir ../gccTemp

cd ..

cd gccTemp

../gcc-4.0.1/configure

(或是你版本編號)

然後跑跑跑應該就沒問題了

.

Round 3

想下sudo make

出包

第一個問題是

error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

還好google百度都大概找得到解法

就是去gcc/collect2.c這個文件1500多行的地方

redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT);

改成

redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT,0777);

.

然後

一包接一包

../../gcc-4.0.1/gcc/unwind-dw2-fde.h:176: warning: parameter ‘last_fde’ declared ‘inline’
在包含自 /usr/include/elf.h:30 的檔案中,
從 /usr/include/link.h:25,
從 ../../gcc-4.0.1/gcc/crtstuff.c:88:
/usr/include/stdint.h:27:24: 錯誤: bits/wchar.h:沒有此一檔案或目錄
/usr/include/stdint.h:28:27: 錯誤: bits/wordsize.h:沒有此一檔案或目錄
In file included from /usr/include/elf.h:30,
from /usr/include/link.h:25,
from ../../gcc-4.0.1/gcc/crtstuff.c:88:

….

我頻死一搏,

sudo cp -v /usr/include/i386-linux-gnu/bits/ /usr/include/

然後..產生了更多的error

((you lose))

廣告

One thought on “[教學] 安裝舊版本的g++ 4.0

迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s