[llvm-dev] bug: cross-compile Clang/LLVM for ARM using Clang/LLVM

Renato Golin via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 25 03:33:42 PDT 2016

On 25 April 2016 at 10:39, 李阳 via llvm-dev <llvm-dev at lists.llvm.org> wrote:

> CC='clang' CXX='clang++' cmake -G Ninja ../llvm-source-code
> -DLLVM_TABLEGEN=/home/lab/workspace/llvm/build4x86/bin/llvm-tblgen
> -DCLANG_TABLEGEN=/home/lab/workspace/llvm/build4x86/bin/clang-tblgen
> -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf
> -DCMAKE_CXX_FLAGS='-target armv7a-linux-gnueabihf -mcpu=cortex-a9
> -I/usr/arm-linux-gnueabihf/include/c++/4.7.3/arm-linux-gnueabihf/
> -I/usr/arm-linux-gnueabihf/include/
> -I/home/lab/workspace/llvm/llvm-source-code/lib4arm/
> -I/home/lab/workspace/llvm/llvm-source-code/lib2ubuntu/
> -I/usr/lib/gcc/x86_64-linux-gnu/4.8/libatomic.so
> -I/usr/lib/gcc/x86_64-linux-gnu/4.8/libatomic.so
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/libatomic.so
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/libatomic.a -mfloat-abi=hard
> -ccc-gcc-name arm-linux-gnueabihf-gcc'

Hi Liyang,

You have "LLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf"  and
"CMAKE_CXX_FLAGS='-target armv7a-linux-gnueabihf" which are different, and
may confuse Clang when finding tools and libraries. Use whatever is the ARM
triple in your system (looks like it's "arm-linux-gnueabihf") and make both
target triple and "-target" to be that exact same string.

Also, you're including x86_64 libraries
(ex. -L/usr/lib/gcc/x86_64-linux-gnu/4.8/libatomic.so) to an ARM
compilation job, that won't work. You have to find the ARM version (maybe
/usr/lib/gcc/arm-linux-gnueabihf/ ?).

Finally, the include paths with -I are only necessary if Clang cannot find
it. The first three should be ok, but using -I on a DSO object
(libatomic.so) makes no sense.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160425/8725b70b/attachment.html>

More information about the llvm-dev mailing list