You are not logged in.
I want to use clang and cross compile to aarch64.
I tried, but the error occurs.
[reimu@main Desktop]$ clang --target=aarch64-linux-gnu -fuse-ld=lld -v a.c
clang version 12.0.1
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/11.1.0
Found candidate GCC installation: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/11.1.0
Found candidate GCC installation: /usr/lib64/gcc/aarch64-linux-gnu/11.1.0
Selected GCC installation: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
"/usr/bin/clang-12" -cc1 -triple aarch64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -disable-llvm-verifier -discard-value-names -main-file-name a.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu generic -target-feature +neon -target-abi aapcs -fallow-half-arguments-and-returns -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /usr/lib/clang/12.0.1 -internal-isystem /usr/local/include -internal-isystem /usr/lib/clang/12.0.1/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir /home/reimu/Desktop -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -o /tmp/a-ed514f.o -x c a.c
clang -cc1 version 12.0.1 based upon LLVM 12.0.1 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/clang/12.0.1/include
/usr/include
End of search list.
"/usr/bin/ld.lld" -pie -EL --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-linux-aarch64.so.1 -o a.out /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/Scrt1.o /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/crti.o /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/crtbeginS.o -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0 -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../aarch64-linux-gnu/lib/../lib64 -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64 -L/usr/bin/../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../aarch64-linux-gnu/lib -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../.. -L/usr/bin/../lib -L/lib -L/usr/lib /tmp/a-ed514f.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/crtendS.o /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/crtn.o
ld.lld: error: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/crtbeginS.o is incompatible with elf64-x86-64
ld.lld: error: /tmp/a-ed514f.o is incompatible with elf64-x86-64
ld.lld: error: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../aarch64-linux-gnu/lib/../lib64/libgcc_s.so.1 is incompatible with elf64-x86-64
ld.lld: error: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../aarch64-linux-gnu/lib/../lib64/libgcc_s.so.1 is incompatible with elf64-x86-64
ld.lld: error: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/crtendS.o is incompatible with elf64-x86-64
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)
Last edited by WinLinux1028 (2021-07-28 14:17:41)
Offline
If I execute compile command without -fuse-ld=lld , this error occurs.
[reimu@main Desktop]$ clang --target=aarch64-linux-gnu -v a.c
clang version 12.0.1
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/11.1.0
Found candidate GCC installation: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/11.1.0
Found candidate GCC installation: /usr/lib64/gcc/aarch64-linux-gnu/11.1.0
Selected GCC installation: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
"/usr/bin/clang-12" -cc1 -triple aarch64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -disable-llvm-verifier -discard-value-names -main-file-name a.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu generic -target-feature +neon -target-abi aapcs -fallow-half-arguments-and-returns -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /usr/lib/clang/12.0.1 -internal-isystem /usr/local/include -internal-isystem /usr/lib/clang/12.0.1/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir /home/reimu/Desktop -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -o /tmp/a-4bb601.o -x c a.c
clang -cc1 version 12.0.1 based upon LLVM 12.0.1 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/clang/12.0.1/include
/usr/include
End of search list.
"/usr/bin/aarch64-linux-gnu-ld" -pie -EL --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-linux-aarch64.so.1 -o a.out /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/Scrt1.o /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/crti.o /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/crtbeginS.o -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0 -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../aarch64-linux-gnu/lib/../lib64 -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64 -L/usr/bin/../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../aarch64-linux-gnu/lib -L/usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../.. -L/usr/bin/../lib -L/lib -L/usr/lib /tmp/a-4bb601.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/crtendS.o /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/crtn.o
/usr/bin/aarch64-linux-gnu-ld: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/Scrt1.o: Relocations in generic ELF (EM: 62)
/usr/bin/aarch64-linux-gnu-ld: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/Scrt1.o: Relocations in generic ELF (EM: 62)
/usr/bin/aarch64-linux-gnu-ld: /usr/bin/../lib64/gcc/aarch64-linux-gnu/11.1.0/../../../../lib64/Scrt1.o: error adding symbols: file in wrong format
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)
Last edited by WinLinux1028 (2021-07-28 14:18:05)
Offline
Please edit your posts and use [ code ] tags (not quote tags) when posting output. This makes the output easier to read and provides a scroll box for long output.
https://wiki.archlinux.org/title/Genera … s_and_code
https://bbs.archlinux.org/help.php#bbcode
Offline
Please edit your posts and use [ code ] tags (not quote tags) when posting output. This makes the output easier to read and provides a scroll box for long output.
https://wiki.archlinux.org/title/Genera … s_and_code
https://bbs.archlinux.org/help.php#bbcode
OK, I did it.
Offline
Can you try adding the following argument to your clang command?
--sysroot=/usr/aarch64-linux-gnu
I was able to get a good build with
clang --target=aarch64-linux-gnu --sysroot=/usr/aarch64-linux-gnu hello.c
Offline
Dunno about clang but I build for aarch64 like this:
% CARCH=aarch64 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- makepkg -sCAf --noconfirm
CPU-optimized Linux-ck packages @ Repo-ck • AUR packages • Zsh and other configs
Online