Hello all,
I am new to LLVM. I am trying to build clang from source using this repository of LLVM for target riscv64-unknown-linux-gnu
. I have RISC-V Linux GNU toolchain already installed at /home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux
. I am using following command to compile LLVM clang:
cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" \
-DBUILD_SHARED_LIBS=True -DLLVM_USE_SPLIT_DWARF=True \
-DCMAKE_INSTALL_PREFIX="/home/ali/custom_installed/llvm" \
-DLLVM_OPTIMIZED_TABLEGEN=True -DLLVM_BUILD_TESTS=False \
-DDEFAULT_SYSROOT="/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu" \
-DLLVM_DEFAULT_TARGET_TRIPLE="riscv64-unknown-linux-gnu" \
-DLLVM_TARGETS_TO_BUILD="RISCV" \
../llvm \
-DLLVM_ENABLE_PROJECTS=clang
The clang is installed without any issue. But when I try to compile a simple helloworld.c
program with following content:
#include <stdio.h>
int main (){
printf("Hello World !\n");
}
using command (inside directory where clang binary is installed): ./clang ~/helloworld.c -o ~/helloworld
it gives me following error:
./clang ~/helloworld.c
/home/ali/helloworld.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~~~~~
1 error generated.
Once I comment the line with #include statement
and (consequently) the line with printf
, then it gives me following error:
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find Scrt1.o: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find crti.o: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find crtbeginS.o: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find -lgcc: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find -lgcc: No such file or directory
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
The output with verbose (-v) flag is as follows:
clang version 16.0.0 (https://github.com/llvm/llvm-project.git 1f8746cc80047acddc8c5be37c7d4eb0a7ea2e1c)
Target: riscv64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/ali/custom_installed/llvm/bin/.
"/home/ali/custom_installed/llvm/bin/clang-16" -cc1 -triple riscv64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name helloworld.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic-rv64 -target-feature +m -target-feature +a -target-feature +f -target-feature +d -target-feature +c -target-feature +relax -target-feature -save-restore -target-abi lp64d -msmall-data-limit 8 -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/home/ali/custom_installed/llvm/bin -resource-dir /home/ali/custom_installed/llvm/lib/clang/16 -isysroot /home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu -internal-isystem /home/ali/custom_installed/llvm/lib/clang/16/include -internal-isystem /home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu/usr/local/include -internal-externc-isystem /home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu/include -internal-externc-isystem /home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu/usr/include -fdebug-compilation-dir=/home/ali/custom_installed/llvm/bin -ferror-limit 19 -fno-signed-char -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -o /tmp/helloworld-1fc79a.o -x c /home/ali/helloworld.c
clang -cc1 version 16.0.0 based upon LLVM 16.0.0git default target riscv64-unknown-linux-gnu
ignoring nonexistent directory "/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu/usr/local/include"
ignoring nonexistent directory "/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu/usr/include"
#include "..." search starts here:
#include <...> search starts here:
/home/ali/custom_installed/llvm/lib/clang/16/include
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu/include
End of search list.
"/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld" --sysroot=/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu -pie -z relro --hash-style=gnu --eh-frame-hdr -m elf64lriscv -X -dynamic-linker /lib/ld-linux-riscv64-lp64d.so.1 -o a.out Scrt1.o crti.o crtbeginS.o -L/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/riscv64-unknown-linux-gnu/lib /tmp/helloworld-1fc79a.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed crtendS.o crtn.o
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find Scrt1.o: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find crti.o: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find crtbeginS.o: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find -lgcc: No such file or directory
/home/ali/RISCV/riscv-gnu-toolchain-github/path_to_install_linux/bin/riscv64-unknown-linux-gnu-ld: cannot find -lgcc: No such file or directory
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
What am I missing/doing wrong ?