Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
howtos:pic32mx_tools_on_solaris [2012/09/16 11:50]
admin [Stage 1 - build bootstrap gcc]
howtos:pic32mx_tools_on_solaris [2023/11/29 17:44] (current)
admin [Stage 3 - deploy gcc and g++ with newlib suport]
Line 1: Line 1:
-====== Deploy binutils 2.22 ======+====== Deploy ​PIC32MX gcc toolchain on Solaris ====== 
 +  * The toolchain **binutils-2.36**, **gcc-10.3.0**,​ **newlib-1.4** no longer works after upgrade from **SRU62** to **SRU63**, since **libisl** was upgraded from version **15** to version **23**. Re-compilation with libisl 23 fixed the problem. 
 +  * The toolchain no longer works on s11u4sru37 due to missing /​usr/​lib/​libmpc.so.2 and /​usr/​lib/​libmpfr.so.1 libraries - /​opt/​mipsel/​libexec/​gcc/​mipsel/​4.5.2/​cc1 depends on them. Reason being the libraries were upgraded to /​usr/​lib/​limpc.so.3 and /​usr/​lib/​libmpfr.so.4 respectively. 
 +To workaround the issue, missing libraries were copied from s11u4sru30 where both old as well as new versions of those libraries are available. 
 +Also, new tool chain has been built based on binutils 2.36, gcc 10.3.0, newlib 4.1.0. 
 +===== binutils 2.36 ===== 
 +  * start building new one 
 +<​code>​ 
 +$ export PATH=/​usr/​gnu/​bin:​$PATH 
 +$ mkdir ~/​projects/​gcc-mips-10.3.0/​ 
 +$ cd ~/​projects/​gcc-mips-10.3.0/​ 
 +$ wget http://​ftp.gnu.org/​gnu/​binutils/​binutils-2.36.tar.gz -O /​tmp/​binutils-2.36.tar.gz 
 +$ tar xvpf /​tmp/​binutils-2.36.tar.gz 
 +$ mkdir build-binutils-el-2.36 
 +$ cd build-binutils-el-2.36 
 +$ ../​binutils-2.36/​configure --target=mipsel --prefix=/​opt/​mipsel 
 +$ make 
 +$ sudo make install 
 +</​code>​ 
 + 
 +===== binutils 2.37 ===== 
 +  * man pages were not built - instead use binutils 2.36 
 + 
 +  * save existing toolchain and prepare for building new one 
 +<​code>​ 
 +$ mv ~/​projects/​gcc-mips/​ ~/​projects/​gcc-mips-ok/​ 
 +# mv /​data/​apps-local/​mipsel /​data/​apps-local/​mipsel-ok 
 +# mkdir /​data/​apps-local/​mipsel 
 +</​code>​ 
 +  * start building new one 
 +<​code>​ 
 +$ export PATH=/​usr/​gnu/​bin:​$PATH 
 +$ mkdir ~/​projects/​gcc-mips/​ 
 +$ cd ~/​projects/​gcc-mips/​ 
 +$ wget http://​ftp.gnu.org/​gnu/​binutils/​binutils-2.37.tar.gz -O /​tmp/​binutils-2.37.tar.gz 
 +$ tar xvpf /​tmp/​binutils-2.37.tar.gz 
 +$ mkdir build-binutils-el 
 +$ cd build-binutils-el 
 +$ ../​binutils-2.37/​configure --target=mipsel --prefix=/​opt/​mipsel 
 +$ make 
 +$ sudo make install 
 +</​code>​ 
 +===== gcc 10.3.0 with newlib 4.1.0 ===== 
 +  * prepare working area 
 +<​code>​ 
 +$ cd ~/​projects/​gcc-mips-10.3.0/​ 
 +$ mkdir build-gcc-el-10.3.0 
 +$ mkdir build-newlib-el-4.1.0 
 +</​code>​ 
 +  * download and unpack 
 +<​code>​ 
 +$ wget http://​ftp.gnu.org/​gnu/​gcc/​gcc-10.3.0/​gcc-10.3.0.tar.gz -O /​tmp/​gcc-10.3.0.tar.gz 
 +$ tar xvpf /​tmp/​gcc-10.3.0.tar.gz 
 +$ wget ftp://​sourceware.org/​pub/​newlib/​newlib-4.1.0.tar.gz -O /​tmp/​newlib-4.1.0.tar.gz 
 +$ tar xvpf /​tmp/​newlib-4.1.0.tar.gz 
 +</​code>​ 
 +  * build and install (tools will be installed into /​opt/​mipsel/​ directory). Building gcc with newlib is done in three steps. 
 +===== Stage 1 - build bootstrap gcc ===== 
 +<​code>​ 
 +$ cd build-gcc-el-10.3.0 
 +$ ../​gcc-10.3.0/​configure --target=mipsel --prefix=/​opt/​mipsel-10.3.0 --without-headers --with-gnu-as --with-gnu-ld --with-newlib --enable-languages=c --with-local-prefix=/​opt/​mipsel --with-native-system-header-dir=/​opt/​mipsel/​include/​ --disable-nls --disable-shared ​ --enable-multilib --disable-decimal-float -disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath 
 +$ make 
 +$ sudo make install 
 +</​code>​ 
 +  * **--enable-multilib** - builds several variants of libraries (big-endian,​ little-endian hard-float and soft-float). Default is little-endian hard-float. 
 +<​code>​ 
 +$ /​opt/​mipsel-10.3.0/​bin/​mipsel-gcc -print-multi-lib 
 +.; 
 +soft-float;​@msoft-float 
 +eb;@EB 
 +soft-float/​eb;​@msoft-float@EB 
 +
 +</​code>​ 
 +===== Stage 2 - deploy newlib ===== 
 +  * newlib requires mips-cc 
 +<​code>​ 
 +# cd /​opt/​mipsel-10.3.0/​bin 
 +# ln -s mipsel-gcc mipsel-cc 
 +</​code>​ 
 +  * build and install 
 +<​code>​$ export PATH=/​opt/​mipsel-10.3.0/​bin:​$PATH 
 +$ cd ~/​projects/​gcc-mips-10.3.0/​build-newlib-el-4.1.0 
 +$ ../​newlib-4.1.0/​configure --target=mipsel --prefix=/​opt/​mipsel-10.3.0 
 +$ make ; echo $? 
 +... 
 +mipsel-cc -B/​home/​dambi/​projects/​gcc-mips/​build-newlib-el/​mipsel/​newlib/​ -isystem /​home/​dambi/​projects/​gcc-mips/​build[27/​1919] 
 +l/​mipsel/​newlib/​targ-include -isystem /​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include -B/​home/​dambi/​projects/​gcc-mips/​build-newlib-el/​mipsel/​libgloss/​mips -L/​home/​dambi/​projects/​gcc-mips/​build-newlib-el/​mipsel/​libgloss/​libnosys -L/home/d 
 +ambi/​projects/​gcc-mips/​newlib-4.1.0/​libgloss/​mips ​   -DPACKAGE_NAME=\"​newlib\"​ -DPACKAGE_TARNAME=\"​newlib\"​ -DPACKAGE_VERSION= 
 +\"​4.1.0\"​ -DPACKAGE_STRING=\"​newlib\ 4.1.0\"​ -DPACKAGE_BUGREPORT=\"​\"​ -DPACKAGE_URL=\"​\"​ -I. -I../​../​../​../​../​newlib-4.1.0/​new 
 +lib/​libc/​stdlib -fno-builtin -DMISSING_SYSCALL_NAMES -DHAVE_INIT_FINI ​     -g -O2 -c -o lib_a-dtoa.o `test -f '​dtoa.c'​ || echo '​../​../​../​../​../​newlib-4.1.0/​newlib/​libc/​stdlib/'​`dtoa.c 
 +In file included from ../​../​../​../​../​newlib-4.1.0/​newlib/​libc/​stdlib/​mprec.h:​29,​ 
 +                 from ../​../​../​../​../​newlib-4.1.0/​newlib/​libc/​stdlib/​dtoa.c:​33:​ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​152:​2:​ error: #error "​double and long double are the s 
 +ame size but LDBL_EQ_DBL is not defined"​ 
 +  152 | #error "​double and long double are the same size but LDBL_EQ_DBL is not defined"​ 
 +      |  ^~~~~ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​195:​3:​ error: unknown type name '​__ieee_ext_field_type 
 +
 +  195 |   ​__ieee_ext_field_type ​ ext_fracl : EXT_FRACLBITS;​ 
 +      |   ​^~~~~~~~~~~~~~~~~~~~~ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​195:​38:​ error: '​EXT_FRACLBITS'​ undeclared here (not in 
 + a function); did you mean '​EXT_FRACBITS'?​ 
 +  195 |   ​__ieee_ext_field_type ​ ext_fracl : EXT_FRACLBITS;​ 
 +      |                                      ^~~~~~~~~~~~~ 
 +      |                                      EXT_FRACBITS 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​195:​26:​ error: bit-field '​ext_fracl'​ width not an inte 
 +ger constant 
 +  195 |   ​__ieee_ext_field_type ​ ext_fracl : EXT_FRACLBITS;​ 
 +      |                          ^~~~~~~~~ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​196:​3:​ error: unknown type name '​__ieee_ext_field_type 
 +
 +  196 |   ​__ieee_ext_field_type ​ ext_frach : EXT_FRACHBITS;​ 
 +      |   ​^~~~~~~~~~~~~~~~~~~~~ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​196:​38:​ error: '​EXT_FRACHBITS'​ undeclared here (not in 
 + a function); did you mean '​EXT_FRACBITS'?​ 
 +  196 |   ​__ieee_ext_field_type ​ ext_frach : EXT_FRACHBITS;​ 
 +      |                                      ^~~~~~~~~~~~~ 
 +      |                                      EXT_FRACBITS 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​196:​26:​ error: bit-field '​ext_frach'​ width not an inte 
 +ger constant 
 +  196 |   ​__ieee_ext_field_type ​ ext_frach : EXT_FRACHBITS;​ 
 +      |                          ^~~~~~~~~ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​197:​3:​ error: unknown type name '​__ieee_ext_field_type 
 +
 +  197 |   ​__ieee_ext_field_type ​ ext_exp ​  : EXT_EXPBITS;​ 
 +      |   ​^~~~~~~~~~~~~~~~~~~~~ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​197:​38:​ error: '​EXT_EXPBITS'​ undeclared here (not in a 
 + ​function);​ did you mean '​EXT_EXP_BIAS'?​ 
 +  197 |   ​__ieee_ext_field_type ​ ext_exp ​  : EXT_EXPBITS;​ 
 +      |                                      ^~~~~~~~~~~ 
 +      |                                      EXT_EXP_BIAS 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​197:​26:​ error: bit-field '​ext_exp'​ width not an integer constant 
 +  197 |   ​__ieee_ext_field_type ​ ext_exp ​  : EXT_EXPBITS;​ 
 +      |                          ^~~~~~~ 
 +/​home/​dambi/​projects/​gcc-mips/​newlib-4.1.0/​newlib/​libc/​include/​ieeefp.h:​198:​3:​ error: unknown type name '​__ieee_ext_field_type'​ 
 +  198 |   ​__ieee_ext_field_type ​ ext_sign ​ : 1; 
 +      |   ​^~~~~~~~~~~~~~~~~~~~~ 
 +make[5]: *** [Makefile:​734:​ lib_a-dtoa.o] Error 1 
 +make[5]: Leaving directory '/​data/​smb/​users/​dambi/​projects/​gcc-mips/​build-newlib-el/​mipsel/​newlib/​libc/​stdlib'​ 
 +make[4]: *** [Makefile:​683:​ all-recursive] Error 1 
 +make[4]: Leaving directory '/​data/​smb/​users/​dambi/​projects/​gcc-mips/​build-newlib-el/​mipsel/​newlib/​libc'​ 
 +make[3]: *** [Makefile:​641:​ all-recursive] Error 1 
 +make[3]: Leaving directory '/​data/​smb/​users/​dambi/​projects/​gcc-mips/​build-newlib-el/​mipsel/​newlib'​ 
 +make[2]: *** [Makefile:​452:​ all] Error 2 
 +make[2]: Leaving directory '/​data/​smb/​users/​dambi/​projects/​gcc-mips/​build-newlib-el/​mipsel/​newlib'​ 
 +make[1]: *** [Makefile:​8492:​ all-target-newlib] Error 2 
 +make[1]: Leaving directory '/​data/​smb/​users/​dambi/​projects/​gcc-mips/​build-newlib-el'​ 
 +make: *** [Makefile:​879:​ all] Error 2 
 +
 +</​code>​ 
 + 
 +* **LDBL_EQ_DBL** not defined in some header files 
 +<​code>​ 
 +$ pwd 
 +~/​projects/​gcc-mips-10.3.0/​build-newlib-el-4.1.0 
 +$ ggrep -Rl LDBL_EQ ./ 
 +./​mipsel/​newlib/​targ-include/​newlib.h 
 +./​mipsel/​newlib/​newlib.h 
 +./​mipsel/​soft-float/​newlib/​targ-include/​newlib.h 
 +./​mipsel/​soft-float/​newlib/​config.log 
 +./​mipsel/​soft-float/​newlib/​config.status 
 +./​mipsel/​soft-float/​newlib/​newlib.h 
 +./​mipsel/​soft-float/​eb/​newlib/​newlib.h 
 +./​mipsel/​soft-float/​eb/​newlib/​targ-include/​newlib.h 
 +./​mipsel/​soft-float/​eb/​newlib/​config.log 
 +./​mipsel/​soft-float/​eb/​newlib/​config.status 
 +./​mipsel/​eb/​newlib/​config.log 
 +./​mipsel/​eb/​newlib/​targ-include/​newlib.h 
 +./​mipsel/​eb/​newlib/​newlib.h 
 +./​mipsel/​eb/​newlib/​config.status 
 +</​code>​ 
 +* define **LDBL_EQ_DBL** in files where it is not defined 
 +<​code>​ 
 +$ vim -p ./​mipsel/​newlib/​targ-include/​newlib.h ./​mipsel/​newlib/​newlib.h 
 +$ make ; echo $? 
 +$ sudo make install 
 +</​code>​ 
 + 
 +===== Stage 3 - deploy gcc and g++ with newlib suport ===== 
 +<​code>​ 
 +$ cd ~/​projects/​gcc-mips-10.3.0/​build-gcc-el-10.3.0 
 +$ ../​gcc-10.3.0/​configure --target=mipsel --prefix=/​opt/​mipsel-10.3.0 --with-gnu-as --with-gnu-ld --with-newlib --enable-languages=c,​c++ --with-local-prefix=/​opt/​mipsel --with-native-system-header-dir=/​opt/​mipsel/​include --disable-nls --disable-shared ​ --enable-multilib --disable-decimal-float -disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath 
 +$ make -j 10 ; echo $? 
 +$ sudo make install 
 +</​code>​ 
 +===== binutils 2.22 =====
   * prepare working area   * prepare working area
 <​code>​ <​code>​
Line 18: Line 203:
 $ sudo make install $ sudo make install
 </​code>​ </​code>​
-====== Deploy ​gcc 4.5.2 with newlib 1.20.0 ​======+===== gcc 4.5.2 with newlib 1.20.0 =====
   * prepare working area   * prepare working area
 <​code>​ <​code>​
Line 27: Line 212:
   * download and unpack   * download and unpack
 <​code>​ <​code>​
-$ wget http://​ftp.gnu.org/​gnu/​gcc/​gcc-4.5.2/​gcc-4.5.2.tar.gz /​tmp/​gcc-4.5.2.tar.gz+$ wget http://​ftp.gnu.org/​gnu/​gcc/​gcc-4.5.2/​gcc-4.5.2.tar.gz ​-O /​tmp/​gcc-4.5.2.tar.gz
 $ tar xvpf /​tmp/​gcc-4.5.2.tar.gz $ tar xvpf /​tmp/​gcc-4.5.2.tar.gz
 $ wget ftp://​sources.redhat.com/​pub/​newlib/​newlib-1.20.0.tar.gz -O /​tmp/​newlib-1.20.0.tar.gz $ wget ftp://​sources.redhat.com/​pub/​newlib/​newlib-1.20.0.tar.gz -O /​tmp/​newlib-1.20.0.tar.gz
howtos/pic32mx_tools_on_solaris.1347789042.txt.gz · Last modified: 2013/02/02 11:21 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0