Warning - 写在前面
不建议重新编译gcc.!!!
最后我在ubuntu14.04上安装codeviz还是失败了,原因gcc与新版本texinfo冲突,目前有Doxygen+GraphViz完全可以代替CodeViz+GraphViz,并且前者有Win版本。
下面是我这两天解决的问题,由于还不断有新问题出现,时间关系我暂时不走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
.
└── 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
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