Compile GCC-4.6.2 in Ubuntu-14.04_32bit

4015 ワード

Warning-前に書いてある
  • 再コンパイルgcc.!!!
  • 最後にubuntu 14.04にcodevizをインストールすることに失敗しました.gccが新しいバージョンtexinfoと衝突したためです.現在、CodeViz+GraphVizの代わりにDoxygen+GraphVizがあり、前者はWinバージョンがあります.
  • 次は私がこの2,3日解決した問題で、まだ新しい問題が絶えず現れているので、時間の関係はしばらくCodeVizを行かない.
  • もし同級生がCodevizという道を歩むことに成功したら、ここで私と議論することができます:)
  • Here are some issues during my compiling gcc 4.6.2 for codeviz.
    When you install codeviz, you have to install gcc first because gcc is patched for generate the call graph. So below gcc-src-dir is /compilers/gcc-graph/gcc-4.6.2/
    .
    └── codeviz-1.0.12
        ├── bin
        ├── compilers
         |     |---- install_gcc-4.6.2.sh  

    Error: gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+
    Solve:
    Go to Download the binarys. At the top of the gcc-src-dir cd gcc-4.6.2 run th script ./contrib/download_prerequisites and then ./configure you won't get this error again.
    Error: /usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory.
    Solve:
    Go to Download the LIBS. if you use ubuntu (14.04 like me) and your current version of gcc is 4.8,try this: sudo apt-get install libx32gcc-4.8-dev g++-multilib build-essential this work for me.
    Error:
    In file included from ../../../gcc-4.6.2/libgcc/../gcc/unwind-dw2.c:333:0:
    ../../../gcc-4.6.2/libgcc/../gcc/config/i386/linux-unwind.h: In function ‘x86_fallback_frame_state’:
    ../../../gcc-4.6.2/libgcc/../gcc/config/i386/linux-unwind.h:138:17: error: field ‘info’ has incomplete type
    

    Solve:
    +++/gcc/config/i386/linux-unwind.h:138: 
    --struct siginfo info;
    ++siginfo_t info;
    

    Error: cannot find crt1.o: No such file or directory
    Solve:
    At first,find it. sudo find /usr/ -name crti* will ouput:
    (32 )/usr/lib/i386-linux-gnu/crti.o
    (64 )/usr/lib/x86_64-linux-gnu/crti.o
    

    and setup an env-var $LIBRARY_PATH
    LIBRARY_PATH=/usr/lib/i386-linux-gnu
    export LIBRARY_PATH
    

    DO NOT LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LIBRARY_PATH,this will get an error like below:
    Error:
    checking LIBRARY_PATH variable... contains current directory
    configure: error: 
    *** LIBRARY_PATH shouldn't contain the current directory when
    *** building gcc. Please change the environment variable
    *** and run configure again.
    make[2]: *** [configure-stage2-gcc] Error 1
    

    Solve:
    Apparently, your LIBRARY_PATH ends in a colon:
    /usr/lib/x86_64-linux-gnu/:
                              ^
    

    Get rid of that:
    export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
    

    Error: gperf :command not found
    Solve:
    just install it. apt-get install gperf
    When You Continue make, You May Get Another Error, see below.
    Error: undefined reference to libc_name_p.
    Solve: make clean and re- make again.
    Sadly I've got another error. :(
    Error:
    ../.././gcc/cp/cfns.gperf:101:1: error: ‘gnu_inline’ attribute present on ‘libc_name_p’ 
    ../.././gcc/cp/cfns.gperf:26:14: error: but not here
    

    Solve:
    What I do is:
    line 99:
     --register int hval = len;
     ++register int hval = (int)len;//mod 1
    
    line 127:
     --#if defined __GNUC_STDC_INLINE__ || __GNUC_GNU.....
     ++#ifdef __GNUC_STDC_INLINE__//mod 2
    

    a little different from where I found the solution. refer to this site: toolchain: fix gcc 4.6 build with gcc5
    WARNING: There are still a lot of issues(VERSION THINGS) when compiling gcc4.6.2 in ubuntu 14.04.