Hi, I am working on the embedded linux system on bug endian mips (mips-linux). As I understand, I need to get the cross-compiler work on my linux-i686 host (redhat 7.2). Following the Bradly's "Building a modern MIPS cross-toolchain for linux", I download following packages: binutils-2.11 gcc-2.95 glibc-2.2.5 glibc-linuxthreads-2.2.5 And following the procedue: 1. build the cross-binutils tar -xzf binutils-2.11.tar.gz mkdir mips-binutils-2.11 cd mips-binutils-2.11 ../binutils-2.11/configure --target=mips-linux \ --prefix=/usr/toolchain-mips --libdir='${exec_prefix}'/mips-linux/i386-linux-lib make make install cd .. Everything is fine. 2. build the C cross-compiler tar -xzf gcc-2.95.tar.gz mkdir mips-gcc-2.95 cd mips-gcc-2.95 ../gcc-2.95/configure --target=mips-linux --prefix=/usr/toolchain-mips --enable-languages=c \ --disable-shared --with-headers=/usr/include make make install cd .. As thw warning, The --with-headers causes configure to make a copy of the headers at the specified location into /usr/local/mipsel-linux/sys-includes and to run fixincludes on them. These headers are then used by xgcc during the cross-building of libgcc.a (which is part of building the static C compiler). This means that you'll need some MIPS host headers laying around somewhere, including the linux and asm subdirectories from the Linux kernel. Maybe you have them from your previous cross-compiler installation. If not, there are various creative ways of obtaining them, including grabbing them from some MIPS distribution. There is also the dubious hack of using your hosts's headers (--with-headers=/usr/include) instead. The key word here is "dubious"; you have been warned. Since I can not get "some MIPS host headers", I use the dubious hack. And it seems get the build of C cross-compiler work. 3. Cross-build glibc tar -xzf glibc.tar.gz cd glibc patch -i ../glibc-2.2.5-mips-build-gmon.diff tar -xzf ../glibc-linuxthreads.tar.gz cd .. mkdir mipsel-glibc cd mipsel-glibc CFLAGS="-O2 -g -finline-limit=10000" ../glibc/configure --host=i686-linux\ --enable-add-ons --prefix=/usr make make install install_root=/usr/local/mips-linux/glibc cd .. cp -a /usr/local/mips-linux/glibc/lib/* /usr/toolchain/mips-linux/lib/ cp -a /usr/local/mips-linux/glibc/usr/include/* /usr/toolchain/mips-linux/include/ cp -a /usr/local/mips-linux/glibc/usr/lib/* /usr/toolchain/mips-linux/lib/ GROUP ( /usr/toolchain/mips-linux/lib/libc.so.6 /usr/toolchain/mipsel-linux/lib/libc_nonshared.a ) It works fine! 4. Build the final C and C++ cross-compilers cd mipsel-gcc ../gcc/configure --target=mipsel-linux prefic=/usr/toolchain --enable-languages=c,c++ make make install However, I got the error_message: home/cross-compiler1/mips-gcc-2.95/gcc/xgcc -B/home/cross-compiler1/mips-gcc-2.95/gcc/ -B/usr/toolchain1-mips/mips-linux/bin/ -c -g -O2 -fvtable-thunks -D_GNU_SOURCE -fno-implicit-templates -I../../../gcc-2.95/libstdc++ -I../../../gcc-2.95/libstdc++/stl -I../libio -I../../../gcc-2.95/libstdc++/../libio -nostdinc++ -D_IO_MTSAFE_IO ../../../gcc-2.95/libstdc++/cmathi.cc In file included from /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/math.h:350, from ../../../gcc-2.95/libstdc++/cmath:7, from ../../../gcc-2.95/libstdc++/cmathi.cc:7: /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `double atan2(double, double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:426: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `float atan2f(float, float)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:426: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long double atan2l(long double, long double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:426: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long double __atan2l(long double, long double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:427: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `double fmod(double, double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:430: unknown register name `ax' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `float fmodf(float, float)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:430: unknown register name `ax' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long double fmodl(long double, long double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:430: unknown register name `ax' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `double atan(double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:467: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `float atanf(float)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:467: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long double atanl(long double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:467: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `double log1p(double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:540: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `float log1pf(float)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:540: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long double log1pl(long double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:540: unknown register name `st(1)' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long int lrintf(float)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:611: unknown register name `st' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long int lrint(double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:616: unknown register name `st' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long int lrintl(long double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:621: unknown register name `st' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long long int llrintf(float)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:634: unknown register name `st' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long long int llrint(double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:639: unknown register name `st' in `asm' /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h: In function `long long int llrintl(long double)': /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys- include/bits/mathinline.h:644: unknown register name `st' in `asm' make[1]: *** [cmathi.o] Error 1 make[1]: Leaving directory `/home/cross-compiler1/mips-gcc-2.95/mips-linux/libstdc++' make: *** [all-target-libstdc++] Error 2 Does any have any idea to fix this error? When I build the C cross-compiler, I use the "dubious hack" --with-headers=/usr/include copy the "MIPS host header files". Are there any other ways to copy the MIPS-host headers? Thanks for your help. Chien-Lung