Microsoft MVP성태의 닷넷 이야기
Linux: 84. WSL / Ubuntu 20.04 - bpftool 설치 [링크 복사], [링크+제목 복사],
조회: 6080
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 

(시리즈 글이 2개 있습니다.)
Linux: 83. WSL / Ubuntu 22.04 - bpftool 설치
; https://www.sysnet.pe.kr/2/0/13762

Linux: 84. WSL / Ubuntu 20.04 - bpftool 설치
; https://www.sysnet.pe.kr/2/0/13763




WSL / Ubuntu 20.04 - bpftool 설치

지난 글에서는 22.04에서 bpftool을 설치해 봤는데요,

WSL / Ubuntu 22.04 - bpftool 설치
; https://www.sysnet.pe.kr/2/0/13762

이상하게도 Ubuntu 20.04에서는 빌드 시 (libelf.h 오류 외에도) llvm-strip 오류가 발생합니다.

make: llvm-strip: Command not found
make: *** [Makefile:211: profiler.bpf.o] Error 127
make: *** Deleting file 'profiler.bpf.o'

어쨌든 "sudo apt-get install llvm -y" 설치하면 되지만, 그래도 해결이 안 되는 오류가 발생합니다.

  CLANG    pid_iter.bpf.o
skeleton/pid_iter.bpf.c:106:6: error: use of unknown builtin '__builtin_preserve_enum_value' [-Wimplicit-function-declaration]
            bpf_core_enum_value_exists(enum bpf_link_type___local,
            ^
/home/kevin/temp/bpftool/src/bootstrap/libbpf/include/bpf/bpf_core_read.h:273:2: note: expanded from macro 'bpf_core_enum_value_exists'
        __builtin_preserve_enum_value(*(typeof(enum_type) *)enum_value, BPF_ENUMVAL_EXISTS)
        ^
1 error generated.
make: *** [Makefile:210: pid_iter.bpf.o] Error 1

찾아봐도 딱히 답이 없는데요, 컴파일 오류가 발생하는 헤더 파일을 보니,

$ cat -n /home/kevin/temp/bpftool/src/bootstrap/libbpf/include/bpf/bpf_core_read.h
...[생략]...

271  #ifdef __clang__
272  #define bpf_core_enum_value_exists(enum_type, enum_value)                   \
273          __builtin_preserve_enum_value(*(typeof(enum_type) *)enum_value, BPF_ENUMVAL_EXISTS)
274  #else
275  #define bpf_core_enum_value_exists(enum_type, enum_value)                   \
276          __builtin_preserve_enum_value(___bpf_typeof(enum_type), enum_value, BPF_ENUMVAL_EXISTS)
277  #endif

clang이 설치된 경우에만 컴파일을 타는 코드에서 오류가 발생한 것입니다. 예상할 수 있겠지만, clang을 삭제했더니 정상적으로 빌드가 됩니다. ^^

$ sudo apt remove clang -y




Ubuntu 20.04에 설치되는 기본 clang 버전이 10.0인데요, 저런 과정 없이 설치가 잘 된 22.04의 경우에는 14.0이었습니다.

$ clang --version
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

혹시나 clang의 버전 문제가 아닐까 싶어서 clang을 최신 버전(18)으로 업그레이드했더니 ^^ 정상적으로 빌드가 됩니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 10/12/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 121  122  123  124  125  126  127  128  129  130  131  132  133  134  [135]  ...
NoWriterDateCnt.TitleFile(s)
1713정성태7/11/201445357Windows: 98. 윈도우 시스템 디스크 용량 확보를 위한 "Package Cache" 폴더 이동 [1]
1712정성태7/10/201433904.NET Framework: 450. 영문 윈도우에서 C# 콘솔 프로그램의 유니코드 출력 방법 [3]
1711정성태7/10/201438862Windows: 97. cmd.exe 창에서 사용할 폰트를 추가하는 방법 [1]
1710정성태7/8/201431545개발 환경 구성: 230. 유니코드의 Surrogate Pair, Supplementary Characters가 뭘까요?파일 다운로드2
1709정성태7/8/201428170VS.NET IDE: 91. Visual Studio에서 32/64비트 IIS Express 실행하는 방법
1708정성태7/7/201425527VS.NET IDE: 90. Visual Studio - 사용자 정의 정적 분석 규칙 만드는 방법 [3]파일 다운로드1
1707정성태7/4/201423662.NET Framework: 449. C#에서 C++로 VARIANT 넘겨주는 방법파일 다운로드1
1706정성태7/3/201422094.NET Framework: 448. .NET SmartClient 컨트롤을 윈도우 8/2012에서 활성화하는 방법파일 다운로드1
1705정성태7/2/201436523VC++: 78. 보이어-무어(Boyer-Moore) 알고리즘이 정말 빠를까? [6]파일 다운로드1
1704정성태7/2/201422984.NET Framework: 447. w3wp.exe AppPool 재생(recycle)하는 방법 정리
1703정성태7/2/201423749.NET Framework: 446. Assembly.Load를 이용해 GAC에 등록된 어셈블리를 로드하는 방법 [1]파일 다운로드1
1702정성태6/23/201423693Phone: 11. Xamarin.Forms - 2. XAML을 이용한 페이지 개발파일 다운로드1
1701정성태6/23/201435858개발 환경 구성: 229. .NET Reflector + Reflexil 도구를 이용해 DLL 코드 변경 [4]
1700정성태6/23/201422566VS.NET IDE: 89. Visual Studio에서 기본 제공되는 성능 프로파일 [2]
1699정성태6/22/201424834Phone: 10. Xamarin.Forms - 1. Forms 시작하기 [2]파일 다운로드1
1698정성태6/22/201426726.NET Framework: 445. [부연 설명] 쉬운 C# 코드를 어럽게 이해하기 [2]
1697정성태6/22/201422429VS.NET IDE: 88. Visual Studio에서 직접 컴파일하는 IL 언어 확장 도구 - IL Support
1696정성태6/22/201421861.NET Framework: 444. clojure와 C#을 통해 이해하는 Sequence와 Vector 형식의 차이점 [1]
1695정성태6/21/201420958개발 환경 구성: 228. PowerShell ISE에서 (입력 기능이 있는) 콘솔 응용 프로그램을 시작하는 방법
1694정성태6/21/201422578개발 환경 구성: 227. 닷넷 용 ClojureCLR 개발환경 설정
1693정성태6/20/201423082개발 환경 구성: 226. Clojure 언어의 윈도우 개발환경 설정
1692정성태6/19/201433492오류 유형: 231. Visual Studio 2013 한글 버전 설치 오류 - The form specified for the subject is not one supported or known by the specified trust provider
1691정성태6/18/201428881개발 환경 구성: 225. 유닉스 계열의 tail 명령어가 제공되는 PowerShell [1]
1690정성태6/18/201431608개발 환경 구성: 224. DirectShow 예제 구하는 방법 [3]
1689정성태6/18/201428532오류 유형: 230. C++ 가변 인자 사용시 va_start 파라미터 전달 방법 [2]
1688정성태6/15/201421321오류 유형: 229. 갤럭시 노트 3 환경에서 Xamarin 앱 배포 충돌
... 121  122  123  124  125  126  127  128  129  130  131  132  133  134  [135]  ...