[LLVMdev] how to change a compiler from a host to a target in Clang's assembler and linker
ETANI NORIKO
noriko-e at fc.ritsumei.ac.jp
Tue Jul 17 21:10:22 PDT 2012
Hi,
Thank you for your information.
I can learn how to use "ln" command to replace an assumed compiler to another one.
Wishes,
Noriko
-----Original message-----
From:Simon Atanasyan <satanasyan at mips.com>
To:noriko-e at fc.ritsumei.ac.jp
Cc:llvmdev <llvmdev at cs.uiuc.edu>,clang-dev Developers <cfe-dev at cs.uiuc.edu>
Date:Fri, 6 Jul 2012 22:40:58 +0400
Subject:Re: [LLVMdev] how to change a compiler from a host to a target in Clang's assembler and linker
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