编译安装GCC

1. 下载GCC 源码包 :   gcc-4.6.3.tar.bz2

2. 下载GCC 依赖包: gmp-5.0.4.tar.bz2, mpfr-3.1.0.tar.bz2 ,mpc-0.9.tar.gz

3. 解压gcc-4.6.3.tar.bz2  指令=》 [flydream@flydream opt]$ tar -xvf gcc-4.6.3.tar.bz2

4. 进入[flydream@flydream opt]$ cd gcc-4.6.3

5. 把下载的gmp-5.0.4.tar.bz2, mpfr-3.1.0.tar.bz2 ,mpc-0.9.tar.gz包放到gcc-4.6.3目录

6. 在gcc-4.6.3目录下分别解压上面的三个包

先安装gmp-5.0.4.tar.bz2

进入gmp目录:cd gmp-5.0.4

建立安装路径: mkdir gmp_install

cd gmp_install

../configure --prefix=/opt/gcc-4.6.3/gmp-5.0.4/gmp_install

make

make install

安装mpfr-3.1.0.tar.bz2

进入mpfr目录

[flydream@flydream gcc-4.6.3]$ cd mpfr-3.1.0

建立安装路径: mkdir mpfr_install

cd mpfr_install

../configure --prefix=/opt/gcc-4.6.3/mpfr-3.1.0/mpfr_install --with-gmp=/opt/gcc-4.6.3/gmp-5.0.4/gmp_install

make

make install


然后安装mpc-0.9.tar.gz

进入mpc

建立安装路径: mkdir mpc_install

cd mpc_install

../configure --prefix=/opt/gcc-4.6.3/mpc-0.9/mpc_install --with-gmp=/opt/gcc-4.6.3/gmp-5.0.4/gmp_install  --with-mpfr=/opt/gcc-4.6.3/mpfr-3.1.0/mpfr_install

make

make install


在编译GCC的过程中可能出现“configure: error: cannot compute suffix of object files: cannot compile”的错误,解决方法是:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gcc-4.6.3/mpc-0.9/mpc_install/lib:/opt/gcc-4.6.3/gmp-5.0.4/gmp_install/lib:/opt/gcc-4.6.3/mpfr-3.1.0/mpfr_install/lib

最后安装GCC

在GCC源码目录外建立安装路径

mkdir gcc_install

../configure --prefix=/opt/gcc_install --with-gmp=/opt/gcc-4.6.3/gmp-5.0.4/gmp_install  --with-mpfr=/opt/gcc-4.6.3/mpfr-3.1.0/mpfr_install ----with-mpc=/opt/gcc-4.6.3/mpc-0.9/mpc_install --enable-checking=release --program-suffix=4.6.3 --enable-languages=c,c++

make

make install

注意–program-suffix参数,表示生成的可执行文件的后缀。–enable-languages参数表示要支持的语言。最后make; make install即可。make的时候还有个小技巧:因为gcc文件很多,编译很慢,可以使用make -j N参数,开启多线程编辑。其中N值可以设定为机器CPU核数x2。

编译好了之后就可以使用/opt/gcc-4.6.3/bin/gcc-4.6.3来编译c程序了。为了使用方便,可以将/opt/gcc-4.6.3/bin/gcc-4.6.3/bin放到系统PATH中:

export PATH=$PATH:/opt/gcc-4.6.3/bin/gcc-4.6.3/bin

 

 

构建arm-linux-gnueabi-gcc-4.6.3交叉编译链

一、准备工作

1、准备文件

binutils-2.22.tar.bz2

gcc-4.6.3.tar.bz2

glibc-2.14.1.tar.xz

glibc-ports-2.14.1.tar.gz

glibc-linuxthreads-2.5.tar.bz2

gdb-7.4.1.tar.bz2

linux-2.6.38.8.tar.bz2

mpfr-3.1.1.tar.bz2

mpc-1.0.1.tar.gz

gmp-5.1.0.tar.bz2

 

2、建立以下变量,方便稍候的输入

#vim ~/.bashrc

export TARGET=arm-linux-gnueabi
export PREFIX=/usr/local/arm-linux-gcc/4.6.3
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PATH:$PREFIX/bin

 

3、为宿主机安装mpfr、mpc、gmp

#tar -xvf gmp-5.1.0.tar.bz2

#cd gmp-5.1.0

#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

#tar -xvf mpfr-3.1.1.tar.bz2

# cd mpfr-3.1.1
#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

#tar -xvf mpc-1.0.1.tar.gz

#cd mpc-1.0.1

#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

4、复制linux-kernel-headers

#tar -xvf linux-2.6.38.8.tar.bz2

#cd linux-2.6.38.8

#make include/linux/version.h
  CHK     include/linux/version.h
  UPD     include/linux/version.h

#mkdir -p $TARGET_PREFIX/include

#cp -r ./include/linux/ $TARGET_PREFIX/include

#cp -r ./include/asm-generic/ $TARGET_PREFIX/include

#cp -r ./arch/arm/include/asm/ $TARGET_PREFIX/include

 

二、编译binutils

#tar -xvf binutils-2.22.tar.bz2

#cd binutils-2.22

#mkdir build

#cd build

#../configure --prefix=$PREFIX --target=$TARGET

#make all -j4

#make install

 

三、初步编译gcc(不带glibc支持)

#tar -xvf gcc-4.6.3.tar.bz2

 

重新解压mpfr-3.1.1.tar.bz2、mpc-1.0.1.tar.gz、gmp-5.1.0.tar.bz2,并改名复制至gcc-4.6.3中

#rm -rf mpfr-3.1.1 mpc-1.0.1  gmp-5.1.0

 

#tar -xvf gmp-5.1.0.tar.bz2

#mv gmp-5.1.0 gmp

#mv ./gmp ./gcc-4.6.3

 

#tar -xvf mpfr-3.1.1.tar.bz2

#mv mpfr-3.1.1 mpfr

#mv ./mpfr ./gcc-4.6.3

 

#tar -xvf mpc-1.0.1.tar.gz

#mv mpc-1.0.1 mpc

#mv ./mpc ./gcc-4.6.3

 

#cd gcc-4.6.3

#mkdir build

#cd build

#../configure --prefix=$PREFIX --target=$TARGET --without-headers --enable-languages=c --disable-threads --with-newlib --disable-shared --disable-libmudflap --disable-libssp --disable-decimal-float
#make all-gcc -j4

#make install-gcc

#make all-target-libgcc -j4

#make install-target-libgcc

 

四、编译glibc

#tar -xvf glibc-2.14.1.tar.xz

#tar -xvf glibc-ports-2.14.1.tar.gz

#mv glibc-ports-2.14.1 ports
#mv ./ports/ ./glibc-2.14.1

#tar -xvf glibc-linuxthreads-2.5.tar.bz2 --directory=./glibc-2.14.1

 

# cd glibc-2.14.1

# mkdir build

# cd build

# CC=$TARGET-gcc

# ln -s /usr/local/arm-linux-gcc/4.6.3/lib/gcc/arm-linux-gnueabi/4.6.3/libgcc.a /usr/local/arm-linux-gcc/4.6.3/lib/gcc/arm-linux-gnueabi/4.6.3/libgcc_eh.a

 

创建config.cache配置文件

# vim config.cache

libc_cv_forced_unwind=yes

libc_cv_c_cleanup=yes

libc_cv_arm_tls=yes

 

# ../configure --host=$TARGET --target=$TARGET --prefix=$TARGET_PREFIX --enable-add-ons --disable-profile --cache-file=config.cache --with-binutils=$PREFIX/bin --with-headers=$TARGET_PREFIX/include

#make all -j4

#make install

 

五、重新编译gcc

# cd gcc-4.6.3/build/

# rm -rf *

# ../configure --prefix=$PREFIX --target=$TARGET --enable-shared --enable-languages=c,c++

# make all -j4

# make install

 

六、编译gdb

# tar -xvf gdb-7.4.1.tar.bz2 
# ../configure --prefix=$PREFIX --target=$TARGET

# make all -j4

# make install

 

七、创建链接

# cd $PREFIX/bin

# ln -s arm-linux-gnueabi-addr2line arm-linux-addr2line
# ln -s arm-linux-gnueabi-ar arm-linux-ar
# ln -s arm-linux-gnueabi-as arm-linux-as
# ln -s arm-linux-gnueabi-c++ arm-linux-c++
# ln -s arm-linux-gnueabi-c++filt arm-linux-c++filt
# ln -s arm-linux-gnueabi-cpp arm-linux-cpp
# ln -s arm-linux-gnueabi-elfedit arm-linux-elfedit
# ln -s arm-linux-gnueabi-g++ arm-linux-g++
# ln -s arm-linux-gnueabi-gcc arm-linux-gcc
# ln -s arm-linux-gnueabi-gcc-4.6.3 arm-linux-gcc-4.6.3
# ln -s arm-linux-gnueabi-gcov arm-linux-gcov
# ln -s arm-linux-gnueabi-gdb arm-linux-gdb
# ln -s arm-linux-gnueabi-gdbtui arm-linux-gdbtui
# ln -s arm-linux-gnueabi-gprof arm-linux-gprof
# ln -s arm-linux-gnueabi-ld arm-linux-ld
# ln -s arm-linux-gnueabi-ld.bfd arm-linux-ld.bfd
# ln -s arm-linux-gnueabi-nm arm-linux-nm
# ln -s arm-linux-gnueabi-objcopy arm-linux-objcopy
# ln -s arm-linux-gnueabi-objdump arm-linux-objdump
# ln -s arm-linux-gnueabi-ranlib arm-linux-ranlib
# ln -s arm-linux-gnueabi-readelf arm-linux-readelf
# ln -s arm-linux-gnueabi-run arm-linux-run
# ln -s arm-linux-gnueabi-size arm-linux-size
# ln -s arm-linux-gnueabi-strings arm-linux-strings
# ln -s arm-linux-gnueabi-strip arm-linux-strip

 

完成


 

你可能感兴趣的:(编译安装GCC)