This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Cross Compiler and Linker for Linux
- From: Dave Jarvis <dave at joot dot com>
- To: gcc at gnu dot org
- Date: Fri, 30 May 2003 10:20:52 -0700
- Subject: Cross Compiler and Linker for Linux
Hi,
After the 19th compile, inching closer and closer to the a development
environment on Linux for Solaris 2.8, I've come to a kicker. While
trying to make this, I've been documenting everything I've done. This
includes: full commands, order of commands, initial directory setup,
software packages, etc. Section 4.0 contains the resulting error message.
If someone can shed some light on what's going wrong -- better would be
the commands I need to type and where they fit as far as order is
concerned -- I'd really appreciate it. I'm guessing I need newlib, but
I was under the impression it would work with the core C/C++ libraries
that come with gcc 3.3. I'm also guessing that I need to configure GCC,
then configure and install newlib, then come back and install GCC.
Thanks in advance for any assitance,
Dave
-----------------------------------------------------------
1.0 Goal
-----------------------------------------------------------
To build a series of cross-compilers and linkers on an i686 Mandrake
Linux box. Targets include: SunOS 5.8 (sparc), HP-UX 11i (PA-Risc 1 and
2), and AIX 5.2 (RS/6K).
-----------------------------------------------------------
2.0 Attempt Details
-----------------------------------------------------------
Target: Solaris 2.8 sparc
Host : Linux Mandrake i686
-----------------------------------------------------------
2.1 Definitions
-----------------------------------------------------------
HOST = Machine on which you want to use for compiling programs.
Defaults to the current machine.
TARGET = Machine architecture (OS + CPU) on which the compiled programs
should execute.
-----------------------------------------------------------
2.2 Libraries and Header Files
-----------------------------------------------------------
1) mkdir /usr/local/cc/sparc-sun-sunos5.8
2) Copy /usr/lib from TARGET machine to HOST machine at:
/usr/local/cc/sparc-sun-sunos5.8
3) Copy /usr/include from TARGET machine to HOST machine at:
/usr/local/cc/sparc-sun-sunos5.8
-----------------------------------------------------------
2.3 Software Packages
-----------------------------------------------------------
1) binutils v2.13.2.1
2) gcc v3.3
-----------------------------------------------------------
3.0 Software Preparation
-----------------------------------------------------------
1) mkdir /usr/local/cc
2) cd /usr/local/cc
3) Download binutils from GNU mirror
4) Download gcc from GNU mirror (includes libraries)
5) tar jxf binutils-2.13.2.1.tar.bz2
6) tar jxf gcc-3.3.tar.bz2
7) mkdir build-binutils
8) mkdir build-gcc
-----------------------------------------------------------
3.1 Compilation and Installation
-----------------------------------------------------------
1) cd build-binutils
2) ../binutils-2.13.2.1/configure \
--prefix=/usr/local/cc/sparc-sun-sunos5.8 \
--target=sparc-sun-solaris2 --with-libs=../sparc-sun-sunos5.8/lib \
--with-headers=../sparc-sun-sunos5.8/include
3) make && make install
4) cd ../build-gcc
5) export PATH=/usr/local/cc/sparc-sun-sunos5.8/bin:$PATH
6) ../gcc-3.3/configure --prefix=/usr/local/cc/sparc-sun-sunos5.8 \
--target=sparc-sun-solaris2 \
--with-headers=../sparc-sun-sunos5.8/include \
--with-libs=../sparc-sun-sunos5.8/lib --with-gnu-as --with-gnu-ld
7) make && make install
(Note: Some documentation says to change the path AFTER configuring gcc,
but that won't work because the configuration script won't find the
binaries to complete the compile. This is an easy mistake to make.)
-----------------------------------------------------------
4.0 Result
-----------------------------------------------------------
The compilation fails because it cannot find some header files. The
error follows.
In file included from
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/in
clude/bits/locale_facets.tcc:41, from
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/in
clude/locale:47, from
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/in
clude/bits/ostream.tcc:37, from
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/in
clude/ostream:535, from
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/in
clude/bitset:58, from ../../../../gcc-3.3/libstdc++-v3/src/bitset.cc:43:
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/include/cmath:107:
error: `acosf' not declared
... snip ...
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/include/cmath:556:
error: `tanf' undeclared in namespace `__gnu_cxx::__c99_binding'
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/include/cmath:
In function `float std::tanh(float)':
/usr/local/cc/build-gcc/sparc-sun-solaris2/libstdc++-v3/include/cmath:574:
error: `tanhf' undeclared in namespace `__gnu_cxx::__c99_binding'