2014年3月5日 星期三

Step 2 build "gcc"

之前的 Makefile 環境都架設好了 , 所以只要放入 gcc-core-4.6.3.tar.bz2 , 和在 ./patch/gcc-4.6.3/ 內放入三個 msp430 gcc 的 patch file 就可以進行編譯了.

不過要先執行  ./contrib/download_prerequisites  這個,這個主要會將 gcc 所需要的 gmp , mpfr 等所相依的原始檔(source  code ) 下載在 gcc-core-4.6.3 的資料夾內.

接著就按照 官方網頁的方式進行 configure.
./configure  --target=msp430  --enable-languages=c  --program-prefix="msp430-"

當然在 make 過程會發現 texinfo 版本問題 , 所以需要修改一下 texi 檔案,全部的 patch 內容如下:

diff -Nura gcc-4.6.3-orignal/gcc/doc/cppopts.texi gcc-4.6.3/gcc/doc/cppopts.texi
--- gcc-4.6.3-orignal/gcc/doc/cppopts.texi    2010-12-20 15:26:12.000000000 +0800
+++ gcc-4.6.3/gcc/doc/cppopts.texi    2014-03-05 02:36:45.304027556 +0800
@@ -769,7 +769,7 @@
 Enable special code to work around file systems which only permit very
 short file names, such as MS-DOS@.

-@itemx --help
+@item --help
 @itemx --target-help
 @opindex help
 @opindex target-help
diff -Nura gcc-4.6.3-orignal/gcc/doc/generic.texi gcc-4.6.3/gcc/doc/generic.texi
--- gcc-4.6.3-orignal/gcc/doc/generic.texi    2011-01-02 09:30:55.000000000 +0800
+++ gcc-4.6.3/gcc/doc/generic.texi    2014-03-05 02:56:07.343415078 +0800
@@ -1415,13 +1415,13 @@
 not matter.  The type of the operands and that of the result are
 always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}.

-@itemx POINTER_PLUS_EXPR
+@item POINTER_PLUS_EXPR
 This node represents pointer arithmetic.  The first operand is always
 a pointer/reference type.  The second operand is always an unsigned
 integer type compatible with sizetype.  This is the only binary
 arithmetic operand that can operate on pointer types.

-@itemx PLUS_EXPR
+@item PLUS_EXPR
 @itemx MINUS_EXPR
 @itemx MULT_EXPR
 These nodes represent various binary arithmetic operations.
diff -Nura gcc-4.6.3-orignal/gcc/doc/invoke.texi gcc-4.6.3/gcc/doc/invoke.texi
--- gcc-4.6.3-orignal/gcc/doc/invoke.texi    2012-01-04 00:43:38.000000000 +0800
+++ gcc-4.6.3/gcc/doc/invoke.texi    2014-03-05 02:53:49.857753175 +0800
@@ -165,7 +165,7 @@
 -pipe  -pass-exit-codes  @gol
 -x @var{language}  -v  -###  --help@r{[}=@var{class}@r{[},@dots{}@r{]]}  --target-help  @gol
 --version -wrapper @@@var{file} -fplugin=@var{file} -fplugin-arg-@var{name}=@var{arg}  @gol
--fdump-ada-spec@r{[}-slim@r{]}} -fdump-go-spec=@var{file}
+-fdump-ada-spec@r{[}-slim@r{]} -fdump-go-spec=@var{file} }

 @item C Language Options
 @xref{C Dialect Options,,Options Controlling C Dialect}.
@@ -5085,11 +5085,11 @@
 @option{-fdump-rtl-ce3} enable dumping after the three
 if conversion passes.

-@itemx -fdump-rtl-cprop_hardreg
+@item -fdump-rtl-cprop_hardreg
 @opindex fdump-rtl-cprop_hardreg
 Dump after hard register copy propagation.

-@itemx -fdump-rtl-csa
+@item -fdump-rtl-csa
 @opindex fdump-rtl-csa
 Dump after combining stack adjustments.

@@ -5100,11 +5100,11 @@
 @option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after
 the two common sub-expression elimination passes.

-@itemx -fdump-rtl-dce
+@item -fdump-rtl-dce
 @opindex fdump-rtl-dce
 Dump after the standalone dead code elimination passes.

-@itemx -fdump-rtl-dbr
+@item -fdump-rtl-dbr
 @opindex fdump-rtl-dbr
 Dump after delayed branch scheduling.

@@ -5149,7 +5149,7 @@
 @opindex fdump-rtl-initvals
 Dump after the computation of the initial value sets.

-@itemx -fdump-rtl-into_cfglayout
+@item -fdump-rtl-into_cfglayout
 @opindex fdump-rtl-into_cfglayout
 Dump after converting to cfglayout mode.

@@ -5179,7 +5179,7 @@
 @opindex fdump-rtl-rnreg
 Dump after register renumbering.

-@itemx -fdump-rtl-outof_cfglayout
+@item -fdump-rtl-outof_cfglayout
 @opindex fdump-rtl-outof_cfglayout
 Dump after converting from cfglayout mode.

@@ -5191,7 +5191,7 @@
 @opindex fdump-rtl-postreload
 Dump after post-reload optimizations.

-@itemx -fdump-rtl-pro_and_epilogue
+@item -fdump-rtl-pro_and_epilogue
 @opindex fdump-rtl-pro_and_epilogue
 Dump after generating the function pro and epilogues.


編譯過程最後一些訊息:


make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
true  DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
 /usr/bin/install -c -m 644 ../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
 install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
make[7]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
true  DO=all multi-do # make
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
true  DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
 /usr/bin/install -c -m 644 ../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
 install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
make[7]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
true  DO=all multi-do # make
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
true  DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
 /usr/bin/install -c -m 644 ../../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
 install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
test -z "/home/jeff/msp430-toolchain/out/msp430/lib" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
 /usr/bin/install -c -m 644 ../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
 install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
make[3]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/gcc'

## Build target 'all' is completed.
=> Elapsed time = 10m 59s



沒問題 , 完工...看看msp430-gcc 的版本訊息吧, 如下"

[jeff@localhost bin]$ pwd
/home/jeff/msp430-toolchain/out/bin
[jeff@localhost bin]$ ./msp430-gcc --version
msp430-gcc (GCC) 4.6.3 20120301 (mspgcc LTS 20120406 unpatched)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


沒有留言:

張貼留言