[LLVMdev] how to change a compiler from a host to a target in Clang's assembler and linker
Simon Atanasyan
satanasyan at mips.com
Fri Jul 6 11:40:58 PDT 2012
Hi,
On Wed, Jul 4, 2012 at 9:21 AM, ETANI NORIKO <noriko-e at fc.ritsumei.ac.jp> wrote:
> Please advise me how to change a compiler from a host one to a target one.
Suppose MIPS toolchain is installed in the $MIPS folder (i.e.
mips-linux-gnu-gcc is in the $MIPS/bin folder). Note, if you want to
generate little-endian code and/or 64-bit code, you have to create the
following links in the $MIPS/bin folder:
* Little-endian 32-bit
ln -s mips-linux-gnu-ld mipsel-linux-gnu-ld
ln -s mips-linux-gnu-as mipsel-linux-gnu-as
* Little-endian 64-bit
ln -s mips-linux-gnu-ld mips64el-linux-gnu-ld
ln -s mips-linux-gnu-as mips64el-linux-gnu-as
* Big-endian 64-bit
ln -s mips-linux-gnu-ld mips64-linux-gnu-ld
ln -s mips-linux-gnu-as mips64-linux-gnu-as
If you use integrated assembler (turned on by -integrated-as option)
you can skip mips-linux-gnu-as links creation.
Exact command line options depends on used toolchain. Examples below
work for Mentor Graphics Toolchain version 2011.09-75
(https://sourcery.mentor.com/GNUToolchain/subscription3130?lite=MIPS).
* Little-endian 32-bit
$ clang -target mipsel-linux-gnu main.c -static \
--sysroot $MIPS/mips-linux-gnu/libc/el \
-I$MIPS/mips-linux-gnu/libc/usr/include \
-B$MIPS/lib/gcc/mips-linux-gnu/4.5.2/el \
-L$MIPS/lib/gcc/mips-linux-gnu/4.5.2/el \
-integrated-as
* Big-endian 32-bit
$ clang -target mips-linux-gnu main.c -static \
--sysroot $MIPS/mips-linux-gnu/libc \
-I$MIPS/mips-linux-gnu/libc/usr/include \
-B$MIPS/lib/gcc/mips-linux-gnu/4.5.2 \
-L$MIPS/lib/gcc/mips-linux-gnu/4.5.2 \
-integrated-as
* Little-endian 64-bit
$ clang -target mips64el-linux-gnu main.c -static \
--sysroot $MIPS/mips-linux-gnu/libc/el \
-I$MIPS/mips-linux-gnu/libc/usr/include \
-B$MIPS/lib/gcc/mips-linux-gnu/4.5.2/el/64 \
-L$MIPS/lib/gcc/mips-linux-gnu/4.5.2/el/64
* Big-endian 64-bit
$ clang -target mips64-linux-gnu main.c -static \
--sysroot $MIPS/mips-linux-gnu/libc \
-I$MIPS/mips-linux-gnu/libc/usr/include \
-B$MIPS/lib/gcc/mips-linux-gnu/4.5.2/64 \
-L$MIPS/lib/gcc/mips-linux-gnu/4.5.2/64
If that does not work for you, could you please provide more information:
1. What command line options do you use?
2. What toolchain do you use and where is it installed?
3. What errors do you get?
--
Simon
More information about the llvm-dev
mailing list