bpf-developer-tutorial icon indicating copy to clipboard operation
bpf-developer-tutorial copied to clipboard

[BUG] Cannot compile <9-runqlat>'s code in Ubuntu 22.04

Open musicBoxes opened this issue 1 year ago • 5 comments

Error message:

INFO [ecc_rs::bpf_compiler] Compiling bpf object...
error: unknown argument: '-target bpf'
/home/runjie/Desktop/bpf-developer-tutorial/src/9-runqlat/core_fixes.bpf.h:28:6: error: use of unknown builtin '__builtin_preserve_field_info' [-Wimplicit-function-declaration]
/home/runjie/Desktop/bpf-developer-tutorial/src/9-runqlat/core_fixes.bpf.h:51:6: error: use of unknown builtin '__builtin_preserve_field_info' [-Wimplicit-function-declaration]
/home/runjie/Desktop/bpf-developer-tutorial/src/9-runqlat/core_fixes.bpf.h:79:6: error: use of unknown builtin '__builtin_preserve_type_info' [-Wimplicit-function-declaration]
/home/runjie/Desktop/bpf-developer-tutorial/src/9-runqlat/core_fixes.bpf.h:79:6: warning: indirection of non-volatile null pointer will be deleted, not trap [-Wnull-dereference]
/home/runjie/Desktop/bpf-developer-tutorial/src/9-runqlat/core_fixes.bpf.h:79:6: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
/home/runjie/Desktop/bpf-developer-tutorial/src/9-runqlat/core_fixes.bpf.h:107:6: error: use of unknown builtin '__builtin_preserve_field_info' [-Wimplicit-function-declaration]
INFO [ecc_rs::bpf_compiler] Generating export types...
INFO [ecc_rs::bpf_compiler] Generating package json..
INFO [ecc_rs::bpf_compiler] Packing ebpf object and config into package.json..

My clang version is clang 14, which is default clang version in Ubuntu 22.04. I also try to use clang 16. However, the error message is same.

musicBoxes avatar Dec 19 '23 01:12 musicBoxes

How did you invoke ecc?

Officeyutong avatar Dec 20 '23 10:12 Officeyutong

I try to use ecc by (1) adding the ecc's folder into $PATH, (2) using absolute path of ecc, and (3) adding sudo into command. However, all methods failed to compile 9-runqlat's code.

musicBoxes avatar Dec 20 '23 21:12 musicBoxes

I try to use ecc by (1) adding the ecc's folder into $PATH, (2) using absolute path of ecc, and (3) adding sudo into command. However, all methods failed to compile 9-runqlat's code.

Which version of ecc are you using? May I have a look at the output of ecc -v? And how did you switch the version of clang?

Officeyutong avatar Dec 21 '23 12:12 Officeyutong

Here is the output of ecc -V: ecc-rs 0.3.4. For the switching of clang version, I first use apt remove to uninstall clang-14. And then I copy clang-16 to /bin/ and /usr/bin/ because ecc cannot find clang-16 if I simply add clang-16 into $PATH.

musicBoxes avatar Dec 27 '23 18:12 musicBoxes

请问这个问题解决了吗?我遇到了同样的问题: 环境ubuntu 20.04.06 rustup 1.27.0 (bbb9276d2 2024-03-08) rustc 1.77.0 (aedd173a2 2024-03-17) Ubuntu clang version 16.0.6 (++20231112100455+7cbf1a259152-1~exp1~20231112100542.106)

NorthFat avatar Apr 19 '24 02:04 NorthFat