歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Ubuntu GCC > 4.4.x considered harmful!

Note: I’ve since updated the build server in question to Ubuntu 12.04, where the default GCC is 4.6.3. It seems that at least some of these issues have been corrected in GCC. Your mileage may vary. –Alan, April 28, 2012

I’ve been having some problems with Ubuntu 11.10’s default GCC (4.6.2) for some time now. First, I was having problems with self-kang CyanogenMod 9 builds on my Samsung Tab 7 Plus (specifically, adb wouldn’t work). Second, I couldn’t boot Linux kernel 3.3 on

my Sandy Bridge Core i7-2600 build server.

I didn’t know the problems were because of GCC until recently, but now that I’ve switched back to 4.4 both of those problems have gone away; I can only assume that something in Ubuntu’s GCC fork is broken. The solution: set GCC 4.4 as the default compiler.

It’s pretty easy to do this in Debian-based distros using the alternatives system.

Install GCC 4.4

First, install GCC 4.4 (and friends):

$ apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib

Set 4.4 to be the default

Then set 4.4 to be higher priority than 4.6:

$ update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100

$ update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50

$ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100

$ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50

$ update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100

$ update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50

Verify that it has worked:

gcc -v

Using built-in specs.

Target: x86_64-linux-gnu

Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.6-11ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id

--with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --disable-werror

--with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu

Thread model: posix

gcc version 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)

Copyright © Linux教程網 All Rights Reserved