2017-04-18 28 views
2

我試圖編譯GCC 4.8.4版採用以下配置參數:編譯GCC 4.8.4錯誤(CXX_ABI 1.3.8)

--prefix=<path to gcc src> --enable-languages=c,c++ --build=x86_64-linux-gnu

然而,當我嘗試make我得到以下錯誤:

make[5]: Entering directory '/DIR/gcc/objdir/x86_64-linux 
gnu/libstdc++-v3/po' 
msgfmt -o de.mo ../../../../libstdc++-v3/po/de.po 
msgfmt -o fr.mo ../../../../libstdc++-v3/po/fr.po 
msgfmt: /DIR/gcc/objdir/x86_64-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6: version CXXABI_1.3.8 not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55) 
Makefile:460: recipe for target fr.mo failed 
make[5]: *** [fr.mo] Error 1 
make[5]: *** Waiting for unfinished jobs.... 
msgfmt: /DIR/gcc/objdir/x86_64-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6: version CXXABI_1.3.8 not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55) 

嘗試1:我試過設置LD_LIBRARY_PATH/usr/lib/x86_64-linux-gnu/:/usr/lib/lib32/。但它似乎並不奏效。

嘗試2:我試過改變GCC版本來編譯它。我已經使用4.7,4.5和5版本。這似乎也不起作用。

看來編譯GCC的時候,錯誤的libstdc++.so.6是拉? 歡迎任何想法或靈感。


PS:我使用Ubuntu 16.04和Linux內核4.4.0-62

+0

獲得GCC-4.8:'sudo易於安裝的g ++ - 4.8' ......而你得到的版本4.8.5:'在/ usr/bin中/ {GCC-4.8, g ++ - 4.8}'。 –

+0

@KnudLarsen我需要編譯GCC版本4.8.4,下載它不適合我的目的 –

+0

'--prefix = '看起來非常錯誤。 – melpomene

回答

1

大廈GCC-4.8.4:打開包裝MPFR-3.1.3.tar.xz,GMP-6.1.0 .tar.xz,mpc-1.0.3.tar.gz轉換爲gcc-4.8.4 /。重命名爲gcc-4.8.4/{mpfr/, gmp/, mpc/}

gcc需要外部一個build目錄GCC-4.8.4 /:mkdir build-gcc

!如果你在gcc-4.8.4 /裏面配置,你將不得不刪除gcc-4.8.4 /,並從頭開始。

cd build-gcc/ 

../gcc-4.8.4/configure --prefix=/usr/local/gcc484 --program-suffix=484 --enable-clocale=gnu --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++ --disable-multilib --disable-libstdcxx-pch --with-mpfr-include=$(pwd)/../gcc-4.8.4/mpfr/src --with-mpfr-lib=$(pwd)/mpfr/src/.libs 

make 


gcc-4.8.4可以與Ubuntu 14.04,16.04不建。結果:gcc48-c++_4.8.4-2ubuntu14_amd64.deb(24.4MB)https://drive.google.com/file/d/0B7S255p3kFXNeWI3N1E2MXdrVm8/view?usp=sharing

Ubuntu 16.04:gcc48,g ++ 48在某些應用程序中測試過,其中一個有400個C++文件:OK。

無依賴,安裝與sudo dpkg -i gcc48-c++_4.8.4-2ubuntu14_amd64.deb提供/usr/local/bin/{ gcc48, g++48 }

+0

即使如果我做你的建議,我仍然會得到同樣的錯誤。 –

+0

?哪個Ubuntu 16.04? 32位或64位? 'uname -m'會回覆i686或x86_64 –

+0

它是64位版本 –