ThothK

Cross Compile with Clang++ 13 on Debian 10 Linker Errors

Oct 5th, 2021 (edited)
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.18 KB | None | 0 0
  1.  
  2. The Problem:
  3. Linker failures while compiling for AARCH64 on x86_64 running Debian 10 using Clang.
  4. I get slightly different errors depending on the value for --stdlib and which linker is used.
  5.  
  6.  
  7.  
  8. ld.lld: error: /usr/aarch64-linux-gnu/lib/libc.so:5: cannot find /usr/aarch64-linux-gnu/lib/libc.so.6 inside /usr/aarch64-linux-gnu
  9.  
  10. ISDiSurfaceGone: isdi_CrossTests: export OUTDIR="ARM64_Linux_Clang_Dynamic"; \
  11. > /usr/bin/clang++-13 \
  12. > -v \
  13. > --target=aarch64-linux-gnu \
  14. > -march=armv8-a \
  15. > -fuse-ld=lld \
  16. > -O0 \
  17. > -fsanitize=undefined \
  18. > --rtlib=compiler-rt \
  19. > --stdlib=libstdc++ \
  20. > --std=c++17 \
  21. > -I/usr/aarch64-linux-gnu/ \
  22. > -I/usr/aarch64-linux-gnu/include \
  23. > -I/usr/aarch64-linux-gnu/include/c++ \
  24. > -I/usr/aarch64-linux-gnu/include/c++/8 \
  25. > -I/usr/aarch64-linux-gnu/include/c++/8/aarch64-linux-gnu \
  26. > -I/usr/lib/gcc-cross/aarch64-linux-gnu/8 \
  27. > -Wall \
  28. > -L/usr/lib/gcc-cross/aarch64-linux-gnu/8 \
  29. > -L/usr/aarch64-linux-gnu \
  30. > -L/usr/aarch64-linux-gnu/lib \
  31. > --sysroot /usr/aarch64-linux-gnu \
  32. > --gcc-toolchain=/usr/aarch64-linux-gnu \
  33. > -rpath /usr/lib/llvm-13/lib \
  34. > -x c++ Source/hello.cc -o Bin/"$OUTDIR"/hello \
  35. > |& tee -a Bin/"$OUTDIR"/hello_$(date +%Y%m%d_%H%M%S).txt
  36. Debian clang version 13.0.0-++20210924062625+d7b669b3a303-1~exp1~20210924163430.113
  37. Target: aarch64-unknown-linux-gnu
  38. Thread model: posix
  39. InstalledDir: /usr/bin
  40.  
  41. "/usr/lib/llvm-13/bin/clang"
  42. -cc1
  43. -triple aarch64-unknown-linux-gnu
  44. -emit-obj
  45. -mrelax-all
  46. --mrelax-relocations
  47. -disable-free
  48. -disable-llvm-verifier
  49. -discard-value-names
  50. -main-file-name hello.cc
  51. -mrelocation-model static
  52. -mframe-pointer=non-leaf
  53. -fmath-errno
  54. -fno-rounding-math
  55. -mconstructor-aliases
  56. -munwind-tables
  57. -target-cpu generic
  58. -target-feature +neon
  59. -target-abi aapcs
  60. -fallow-half-arguments-and-returns
  61. -debugger-tuning=gdb
  62. -v
  63. -fcoverage-compilation-dir=/CodeTest/isdi_CrossTests
  64. -resource-dir /usr/lib/llvm-13/lib/clang/13.0.0
  65. -I /usr/aarch64-linux-gnu/
  66. -I /usr/aarch64-linux-gnu/include
  67. -I /usr/aarch64-linux-gnu/include/c++
  68. -I /usr/aarch64-linux-gnu/include/c++/8
  69. -I /usr/aarch64-linux-gnu/include/c++/8/aarch64-linux-gnu
  70. -I /usr/lib/gcc-cross/aarch64-linux-gnu/8
  71. -isysroot /usr/aarch64-linux-gnu
  72. -internal-isystem /usr/lib/llvm-13/lib/clang/13.0.0/include
  73. -internal-isystem /usr/aarch64-linux-gnu/usr/local/include
  74. -internal-externc-isystem /usr/aarch64-linux-gnu/include
  75. -internal-externc-isystem /usr/aarch64-linux-gnu/usr/include
  76. -O0
  77. -Wall
  78. --std=c++17
  79. -fdeprecated-macro
  80. -fdebug-compilation-dir=/CodeTest/isdi_CrossTests
  81. -ferror-limit 19
  82. -fsanitize=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,integer-divide-by-zero,nonnull-attribute,null,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,unreachable,vla-bound,vptr
  83. -fsanitize-recover=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,integer-divide-by-zero,nonnull-attribute,null,pointer-overflow,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,vla-bound,vptr
  84. -fno-signed-char
  85. -fgnuc-version=4.2.1
  86. -fcxx-exceptions
  87. -fexceptions
  88. -target-feature +outline-atomics
  89. -faddrsig
  90. -D__GCC_HAVE_DWARF2_CFI_ASM=1
  91. -o /tmp/hello-ff7de7.o
  92. -x c++ Source/hello.cc
  93. clang -cc1 version 13.0.0 based upon LLVM 13.0.0 default target x86_64-pc-linux-gnu
  94. ignoring nonexistent directory "/usr/aarch64-linux-gnu/usr/local/include"
  95. ignoring nonexistent directory "/usr/aarch64-linux-gnu/usr/include"
  96. ignoring duplicate directory "/usr/aarch64-linux-gnu/include"
  97. as it is a non-system directory that duplicates a system directory
  98. #include "..." search starts here:
  99. #include <...> search starts here:
  100. /usr/aarch64-linux-gnu
  101. /usr/aarch64-linux-gnu/include/c++
  102. /usr/aarch64-linux-gnu/include/c++/8
  103. /usr/aarch64-linux-gnu/include/c++/8/aarch64-linux-gnu
  104. /usr/lib/gcc-cross/aarch64-linux-gnu/8
  105. /usr/lib/llvm-13/lib/clang/13.0.0/include
  106. /usr/aarch64-linux-gnu/include
  107. End of search list.
  108. "/usr/lib/llvm-13/bin/ld.lld"
  109. --sysroot=/usr/aarch64-linux-gnu
  110. -EL
  111. --hash-style=both
  112. --build-id
  113. --eh-frame-hdr
  114. -m aarch64linux
  115. -dynamic-linker /lib/ld-linux-aarch64.so.1
  116. -o Bin/ARM64_Linux_Clang_Dynamic/hello
  117. /usr/aarch64-linux-gnu/lib/crt1.o
  118. /usr/aarch64-linux-gnu/lib/crti.o
  119. /usr/aarch64-linux-gnu/lib/crtbegin.o
  120. -L/usr/lib/gcc-cross/aarch64-linux-gnu/8
  121. -L/usr/aarch64-linux-gnu
  122. -L/usr/aarch64-linux-gnu/lib
  123. -L/usr/aarch64-linux-gnu/lib
  124. --whole-archive /usr/lib/llvm-13/lib/clang/13.0.0/lib/linux/libclang_rt.ubsan_standalone-aarch64.a
  125. --no-whole-archive
  126. --dynamic-list=/usr/lib/llvm-13/lib/clang/13.0.0/lib/linux/libclang_rt.ubsan_standalone-aarch64.a.syms
  127. --whole-archive /usr/lib/llvm-13/lib/clang/13.0.0/lib/linux/libclang_rt.ubsan_standalone_cxx-aarch64.a
  128. --no-whole-archive
  129. --dynamic-list=/usr/lib/llvm-13/lib/clang/13.0.0/lib/linux/libclang_rt.ubsan_standalone_cxx-aarch64.a.syms
  130. -rpath /usr/lib/llvm-13/lib /tmp/hello-ff7de7.o
  131. -lstdc++
  132. -lm
  133. --no-as-needed
  134. -lpthread
  135. -lrt
  136. -lm
  137. -ldl /usr/lib/llvm-13/lib/clang/13.0.0/lib/linux/libclang_rt.builtins-aarch64.a
  138. -lc /usr/lib/llvm-13/lib/clang/13.0.0/lib/linux/libclang_rt.builtins-aarch64.a
  139. /usr/aarch64-linux-gnu/lib/crtend.o /usr/aarch64-linux-gnu/lib/crtn.o
  140.  
  141. ld.lld: error: /usr/aarch64-linux-gnu/lib/libc.so:5: cannot find /usr/aarch64-linux-gnu/lib/libc.so.6 inside /usr/aarch64-linux-gnu
  142. >>> GROUP ( /usr/aarch64-linux-gnu/lib/libc.so.6 /usr/aarch64-linux-gnu/lib/libc_nonshared.a AS_NEEDED ( /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 ) )
  143. >>> ^
  144. clang: error: linker command failed with exit code 1 (use -v to see invocation)
  145.  
  146. cannot find /usr/aarch64-linux-gnu/lib/libc.so.6
  147. ISDiSurfaceGone: ~: ls /usr/aarch64-linux-gnu/lib/libc.so.6
  148. lrwxrwxrwx 1 root root 12 Oct 2 08:31 /usr/aarch64-linux-gnu/lib/libc.so.6 -> libc-2.28.so
  149. ISDiSurfaceGone: ~: ls /usr/aarch64-linux-gnu/lib/libc-2.28.so
  150. -rwxr-xr-x 1 root root 1439544 Oct 2 08:31 /usr/aarch64-linux-gnu/lib/libc-2.28.so
  151. ISDiSurfaceGone: ~: file /usr/aarch64-linux-gnu/lib/libc-2.28.so
  152. /usr/aarch64-linux-gnu/lib/libc-2.28.so: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=2756a33e365fd6e64443cf0e3c679b466cb04dfc, for GNU/Linux 3.7.0, stripped
  153. ISDiSurfaceGone: ~:
  154.  
  155.  
  156. In case this helps:
  157. ISDiSurfaceGone: ~: head -25 /usr/aarch64-linux-gnu/lib/libc.so
  158. /* GNU ld script
  159. Use the shared library, but some functions are only in
  160. the static library, so try that secondarily. */
  161. OUTPUT_FORMAT(elf64-littleaarch64)
  162. GROUP ( /usr/aarch64-linux-gnu/lib/libc.so.6 /usr/aarch64-linux-gnu/lib/libc_nonshared.a AS_NEEDED ( /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 ) )
  163. ISDiSurfaceGone: ~: ls /usr/aarch64-linux-gnu/lib/libc.so.6
  164. lrwxrwxrwx 1 root root 12 Oct 2 08:31 /usr/aarch64-linux-gnu/lib/libc.so.6 -> libc-2.28.so
  165. ISDiSurfaceGone: ~: ls /usr/aarch64-linux-gnu/lib/libc_nonshared.a
  166. -rw-r--r-- 1 root root 22940 Oct 2 08:31 /usr/aarch64-linux-gnu/lib/libc_nonshared.a
  167. ISDiSurfaceGone: ~: ls /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1
  168. lrwxrwxrwx 1 root root 10 Oct 2 08:31 /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 -> ld-2.28.so
  169.  
  170.  
  171.  
  172.  
  173. Thanks
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
Add Comment
Please, Sign In to add comment