歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

在Ubuntu 12.04 下編譯GCC 4.7

本文將介紹如何在 Ubuntu 12.04 下編譯 gcc 4.7,我很奇怪的是在 Ubuntu 下編譯 gcc 源碼也那麼復雜,不過 Ubuntu 也是 Linux 系統之一,就沒什麼好奇怪的了。

首先檢查你是否已經默認安裝 Ubuntu gcc 和 binutils ,如果你使用了 64 位的桌面版本,那麼默認是已經安裝了。下面的部分我們建議你打開一個終端來執行相應的命令。

在此之前建議更新下系統,執行如下命令:

1 sudo apt-get install update 2 sudo apt-get install upgrade

接下來我們需要安裝一些所需的軟件包:

1 sudo apt-get install g++ 2 sudo apt-get install gawk 3 sudo apt-get install m4 4 sudo apt-get install gcc-multilib

然後從 GNU 網站上下載最新的 gcc-4.7 源碼,請訪問 http://gcc.gnu.org/mirrors.html 然後選擇 gcc-4.7 的最新穩定版本,文件名是 gcc-4.7.0.tar.bz2. 將它保存到本地。

你還需要另外三個庫才能成功編輯 gcc,這三個庫分別是:mpc, mpfr 和 gmp. 使用鏈接進入下載最新版本分別是:gmp-5.0.4.tar.bz2, mpc-0.9.tar.gz 和 mpfr-3.1.0.tar.gz ,並且保存到跟 gcc 4.7 源文件所在的同一個目錄。

打開終端進入上述幾個文件所在的目錄:

1 cd ~ 2 cd Downloads

我們先開始編譯 gmp 庫

1 cd gmp* 2 mkdir build && cd build 3 ../configure --prefix=/usr/gcc_4_7 --build=x86_64-linux-gnu 4 make 5 sudo make install

幾分鐘後你將有一個已編譯好和安裝好的 gmp 庫,如果一切順利,恭喜你!

使用相同的步驟來編譯 MPFR:

1 cd .. 2 cd .. 3 cd mpfr* 4 mkdir build && cd build 5 ../configure --build=x86_64-linux-gnu --prefix=/usr/gcc_4_7 --with-gmp=/usr/gcc_4_7 6 make 7 sudo make install

緊接著是 MPC:

1 cd .. 2 cd .. 3 cd mpc* 4 mkdir build && cd build 5 ../configure --build=x86_64-linux-gnu --prefix=/usr/gcc_4_7 --with-gmp=/usr/gcc_4_7 --with-mpfr=/usr/gcc_4_7 6 make 7 sudo make install

到這一步就完成個 gcc 所需包的編譯和安裝,在某些機器上這三者的編譯可能超過一個小時,做好心理准備。

接下來我們可以開始編譯 C/C++ 和 Fortran 編譯器:

01 cd .. 02 cd .. 03 mkdir build && cd build 04 export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ 05 export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu 06 export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu 07 ../gcc-4.7.0/configure --build=x86_64-linux-gnu --prefix=/usr/gcc_4_7 --with-gmp=/usr/gcc_4_7 --with-mpfr=/usr/gcc_4_7 --with-mpc=/usr/gcc_4_7 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-4.7 08 make 09 sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64 10 sudo make install

下面命令可將 gcc 4.7 添加到系統路徑中,或者直接編輯 .bashrc 文件並在最後添加下面一行:

1 export PATH=/usr/gcc_4_7/bin:$PATH

你不知道什麼是 .bashrc 文件?沒關系,打開終端執行:

1 cd ~ 2 gedit .bashrc

使用下面命令重新加載 .bashrc 文件:

1 ./.bashrc

下面是調用編譯器的簡單方法

1 g++-4.7 test.cpp -o test

如果你的磁盤空間緊張,記得刪除源碼文件目錄下的 *build* 子目錄。

接下來我們檢查 g++-4.7 是否能編譯一些 C++11 規范的代碼,打開你喜好的編輯器,復制下面一段代碼並保持該文件為 tst_lambda.cpp:

01 //Program to test the new C++11 lambda syntax 02 #include <iostream> 03    04 using namespace std; 05    06 int main() 07 { 08     cout << [](int m, int n) { return m + n;} (2,4) << endl; 09     return 0; 10 }

編譯並運行上述 lambda 示例將返回 6:

1 g++-4.7 -std=c++11 tst_lambda.cpp -o tst_lambda 2 ./tst_lambda 3 6

g++-4.7 同時也支持 C++11 線程:

01 //Create a C++11 thread from the main program 02    03 #include <iostream> 04 #include <thread> 05    06 //This function will be called from a thread 07 void call_from_thread() { 08     std::cout << "Hello, World!" << std::endl; 09 } 10    11 int main() { 12     //Launch a thread 13     std::thread t1(call_from_thread); 14    15     //Join the thread with the main thread 16     t1.join(); 17        18     return 0; 19 }

如果你是一個 Fortran 開發者,你可以使用 Fortran 2008 特性,例如 do concurrent

01 integer,parameter::mm=100000 02 real::a(mm), b(mm) 03 real::fact=0.5 04    05 ! initialize the arrays 06 ! ... 07    08 do concurrent (i = 1 : mm) 09     a(i) = a(i) + b(i) 10 enddo 11    12 end

編譯並執行上述代碼:

1 gfortran-4.7 tst_concurrent_do.f90 -o tst_concurrent_do 2 ./tst_concurrent_do

至此,你已經完成了在 Ubuntu 12.04 上編譯 GCC 4.7 的所有步驟。

Copyright © Linux教程網 All Rights Reserved