[LLVMdev] Is cross-compiling for ARM on x86 with llvm/Clang possible?

Journeyer J. Joh oosaprogrammer at gmail.com
Wed Jun 27 05:24:21 PDT 2012


Hello,

With your kind concern and help, I now can make a binary for ARM target.

./clang -v --save-temps -ccc-host-triple arm-none-linux-gnueabi
--sysroot=/home/hum/Documents/Projects/arm_toolchain/arm-2010.09/arm-none-linux-gnueabi/libc
-gcc-toolchain /home/hum/Documents/Projects/arm_toolchain/arm-2010.09
hello.c -o hello

The build command is shown above.

After that, I prepared an ARM laptop, AC100 - TOSHIBA.
I installed Ubuntu 12.04 in the way guided from the link below.

https://wiki.ubuntu.com/ARM/TEGRA/AC100

So I moved the final binary from host PC to AC100 and executed.
But the binary DIDN'T RUN.

$./hello

returns an error message below.

bash: ./hello: No such file hello

I need to understand why it doesn't run on ARM laptop.

I compiled another sample program hi.c on the ARM laptop and compared both
- the one cross compiled "hello" and the other self host compiled "hi".

Output message of utility "file" is almost the same except Linux version,
one is 2.6.16 and the other is 2.6.31. But the output of "ldd" shows
something meaningful.

ldd hi
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6ecf000)
    /lib/ld-linux-armhf.so.3 (0xb6fc3000)

ldd hello
    not a dynamic executable


I guess I have to use a cross toolchain for my ARM target - AC 100. It has
been equipped with Ubuntu 12.04.


Could you provide me any hint to analize this problem?

Thank you in advance.

Journeyer J. Joh



2012/6/21 Journeyer J. Joh <oosaprogrammer at gmail.com>

> Hi Joerg,
>
> Thank you very much!
>
> I finally found a working command string to cross-compile for ARM on x86.
>
> ./clang -v --save-temps -ccc-host-triple arm-none-linux-gnueabi
> --sysroot=/home/hum/Documents/Projects/arm_toolchain/arm-2010.09/arm-none-linux-gnueabi/libc
> -gcc-toolchain /home/hum/Documents/Projects/arm_toolchain/arm-2010.09
> hello.c -o hello
>
> Above works fine! Important options are
>
> -ccc-host-triple arm-none-linux-gnueabi
>
> --sysroot=/home/hum/Documents/Projects/arm_toolchain/arm-2010.09/arm-none-linux-gnueabi/libc
> -gcc-toolchain /home/hum/Documents/Projects/arm_toolchain/arm-2010.09
>
> And the environment variable PATH doesn't need to be changed.
>
> Thank you everyone who answered for my questions.
>
> Regards
> Journeyer J. Joh
>
> 2012/6/20 Joerg Sonnenberger <joerg at britannica.bec.de>
>
>> On Wed, Jun 20, 2012 at 05:59:07PM +0900, Journeyer J. Joh wrote:
>> >
>> /home/hum/Documents/Projects/arm_toolchain/arm-2010.09/bin/arm-none-linux-gnueabi-ld
>>
>> Make sure the directory is in PATH, it will pick up LD automatically
>> then.
>>
>> Joerg
>>
>
>
>
> --
> ----------------------------------------
> Journeyer J. Joh
> o o s a p r o g r a m m e r
> a t
> g m a i l  d o t  c o m
> ----------------------------------------
>
>


-- 
----------------------------------------
Journeyer J. Joh
o o s a p r o g r a m m e r
a t
g m a i l  d o t  c o m
----------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120627/2f144ec6/attachment.html>


More information about the llvm-dev mailing list