Warning - 寫在前面
不建議重新編譯gcc.!!!
最后我在ubuntu14.04上安裝codeviz還是失敗了,原因gcc與新版本texinfo沖突滨达,目前有Doxygen+GraphViz完全可以代替CodeViz+GraphViz得滤,并且前者有Win版本陨献。
下面是我這兩天解決的問題,由于還不斷有新問題出現(xiàn),時(shí)間關(guān)系我暫時(shí)不走CodeViz了。
若有同學(xué)成功走通Codeviz這條路可以在這跟我討論下:)
Here are some issues during my compiling gcc 4.6.2 <strong>for codeviz</strong>.
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 <codeviz-src-dir>/compilers/gcc-graph/gcc-4.6.2/
.
└── codeviz-1.0.12
├── bin
├── compilers
| |---- install_gcc-4.6.2.sh <--you will run this script,and it will: 1.download gcc-4.6.2.tar.gz
│ ├── gcc-graph 2.mkdir gcc-graph
│ │ ├── gcc-4.6.2 <--where gcc actually is 3. untar it into gcc-graph
│ │ └── objdir 4. patch it
│ └── gcc-patches 5. compile it.
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-dircd 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
<strong>DO NOT</strong> <i>LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LIBRARY_PATH</i>,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
<strong>When You Continue make, You May Get Another Error, see below.</strong>
Error:
undefined reference to libc_name_p.
Solve:
make clean
and re-make
again.
<strong>Sadly I've got another error. :(</strong>
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:<a href=https://github.com/jmccrohan/openwrt/commit/46f366f967757517ff75753db0647b166a838a6b>toolchain: fix gcc 4.6 build with gcc5 </a>