LLVM, -fprofile-instr-generate, Undefined reference to '__llvm_profile_register_function

I encountered the following error with "-fprofile-instr-generate". Rate your entries to resolve this error.

Thank,

Error:

clang++ -O2 -fprofile-instr-generate hello.cpp
/tmp/hello-58ef5f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-58ef5f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-58ef5f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-58ef5f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-58ef5f.o:hello.cpp:function __llvm_profile_runtime_user: error: undefined reference to '__llvm_profile_runtime'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Clang Version: Printable Version 3.5.0

OS: Ubuntu 14.04

LD version: GNU gold (GNU Binutils 2.24.51.20140522) 1.11

LLVM configuration : configure --enable-profiling --enable-optimized --enable-shared --disable-debug-runtime --enable-target = all --prefix = / install --with-Binutils-include = / gold_linker / binutils / enable

Above the error says: use -v. The output of -v is as follows

 "/usr/local/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. -L/home/LLVM_install/bin/../lib -L/lib -L/usr/lib /tmp/hello-c8552f.o /home/LLVM_install/bin/../lib/clang/3.5.0/lib/linux/libclang_rt.profile-x86_64.a -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o
/tmp/hello-c8552f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-c8552f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-c8552f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-c8552f.o:hello.cpp:function __llvm_profile_init: error: undefined reference to '__llvm_profile_register_function'
/tmp/hello-c8552f.o:hello.cpp:function __llvm_profile_runtime_user: error: undefined reference to '__llvm_profile_runtime'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
+4
2

, cmake llvm compiler-rt. configure llvm compiler-rt, .

#Step-1) Build your LLVM compiler as follows
cd /home/user
git clone http://llvm.org/git/llvm.git
cd llvm/tools
git clone http://llvm.org/git/clang.git
cd ../../
mkdir build_folder
cd build_folder
cmake /home/user/llvm
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_INSTALL_PREFIX=/home/user/llvm_install /home/user/llvm
make 
make install

#Step-2) Build compiler-rt as follows. Use llvm-config from your llvm installation from above step-1
git clone http://llvm.org/git/compiler-rt.git
mkdir comp_rt_build_dir
cd comp_rt_build_dir
cmake ../compiler-rt -DLLVM_CONFIG_PATH=/path/to/llvm-config
make 
make install
+1

, , . :

clang, -fprofile-instr-generate , , .

-Wl,-fprofile-instr-generate.

0

Source: https://habr.com/ru/post/1547386/


All Articles