之前的 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.
沒有留言:
張貼留言