2016-01-02 211 views
3

現在我的ubuntu 15.10機器上的gcc和g ++是版本5.2.1。出於某種原因,我需要安裝它們的v4.4。我下載gcc4.4.7的源代碼,並與此配置:從源代碼編譯gcc時出錯

../configure \ 
    --disable-checking \ 
    --enable-languages=c,c++ \ 
    --enable-multiarch \ 
    --enable-shared \ 
    --enable-threads=posix \ 
    --program-suffix=4.4 \ 
    --with-gmp=/usr/local/lib \ 
    --with-mpc=/usr/local/lib \ 
    --with-mpfr=/usr/local/lib \ 
    --without-included-gettext \ 
    --with-system-zlib \ 
    --with-tune=generic \ 
    --prefix=$HOME/bin/android_build 

我有一個makefile,並嘗試做,但我收到這兩個錯誤:

../../gcc/toplev.c:536:1: error: redefinition of ‘floor_log2’ 
../../gcc/toplev.c:571:1: error: redefinition of ‘exact_log2’ 

那麼如何解決這個問題呢?謝謝。

+0

你解決了嗎?由於您在一個月內沒有得到答案,因此我猜測答案是'是的 - 我已經充分解決了這個問題,或者通過下載預編譯版本來解決問題。 –

+0

我剛剛在虛擬機上安裝了舊版本的ubuntu – darklord

回答

3

我試圖安裝gcc 4.4.7,也有更新的gcc版本。我看到了和你一樣的錯誤。根據this bug report,問題來自標誌-fno-gn89-inline,該標誌成爲處理新版gcc版本的內聯函數的默認標誌。截至gcc 4.3,默認值爲-fgnu89-inline。因此,編譯時需要設置-fgnu89-inline標誌。

我試圖與

CFLAGS='-fgnu89-inline -g -O2' CXXFLAGS='-fgnu89-inline -g -O2' ./configure 
make 

,但我仍然得到同樣的錯誤。我假設國旗沒有得到正確轉發,但我不知道。然後我嘗試了正常

./configure 

,並改變了Makefile兩行從

CC = gcc 
CXX = g++ 

CC = gcc -fgnu89-inline 
CXX = g++ -fgnu89-inline 

有了這個,我沒有看到任何的錯誤更多。

不過,我碰到了其他錯誤:

@itemx must follow @item 

它們通過texinfo較新版本引起的,所以你可以做的是使用texinfo舊版本。也許你也可以用手修復它們,我嘗試了一個例子,但我不知道我在做什麼,所以我沒有遵循這個道路。

長話短說,我想你最好是通過運行虛擬機或碼頭圖像。