차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
beyondlinuxfromscratch:installedpackages:llvm-17.0.6 [2024/05/29 21:30] – 만듦 baecy | beyondlinuxfromscratch:installedpackages:llvm-17.0.6 [2024/05/29 23:10] (현재) – baecy | ||
---|---|---|---|
줄 21: | 줄 21: | ||
=== 패키지 정보 === | === 패키지 정보 === | ||
- | 다운로드(HTTP): | + | * 다운로드(HTTP): |
- | MD5 sum: <clipb f=c> | + | |
- | 다운로드 크기: 57MB | + | |
+ | * 필요한 예상 디스크 공간: 4.2GB(964MB 설치, 테스트용 20GB 및 문서용 308MB 추가) | ||
+ | * 예상 빌드 시간: 13 SBU(테스트용 8 SBU 추가, 둘 다 병렬 처리=8 사용) | ||
- | 필요한 예상 디스크 공간: 4.2GB(964MB 설치, 테스트용 20GB 및 문서용 308MB 추가) | + | === 추가 |
- | 예상 빌드 시간: 13 SBU(테스트용 8 SBU 추가, 둘 다 병렬 처리=8 사용) | + | == LLVM용 Cmake 모듈 == |
- | 추가 | + | * 다운로드: [[https:// |
- | LLVM용 Cmake 모듈 | + | * MD5 sum: 2b75b6446bfd5d0dcc288cd412b6a52a |
+ | * 다운로드 크기: 12 KB | ||
- | 다운로드: https:// | + | == LLVM 빌드 시스템을 위한 타사 종속성 == |
- | MD5 합계 | + | * 다운로드: |
+ | * MD5 sum: 09c9f2259766dd65b75cd728df11b395 | ||
+ | * 다운로드 | ||
- | 다운로드 | + | === 권장 |
- | LLVM 빌드 시스템을 위한 타사 종속성 | + | == Clang == |
- | 다운로드: | + | * 다운로드: |
+ | * MD5 합계: 52ff9f49e064860445474aa21e4a7e40 | ||
+ | * 다운로드 크기: 21 MB | ||
+ | * Clang에서 기본적으로 SSP를 활성화하는 패치: [[https:// | ||
- | MD5 총 다운로드: 09c9f2259766dd65b75cd728df11b395 | + | === 옵션 |
- | 다운로드 크기: 376 KB | + | == Compiler RT == |
- | 권장 | + | *다운로드: [[https:// |
- | Clang | + | *MD5 합계 다운로드: |
+ | *다운로드 크기: 2.4 MB | ||
- | 다운로드: | + | === LLVM 종속성 === |
- | MD5 합계: 52ff9f49e064860445474aa21e4a7e40 | + | == 필수 == |
- | 다운로드 크기: 21 MB | + | * [[.:CMake-3.28.3]] |
- | Clang에서 기본적으로 SSP를 활성화하는 패치: https:// | + | == 옵션 == |
- | 옵션 다운로드 | + | * [[.: |
- | 컴파일러 RT | + | * [[.: |
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[.: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
- | 다운로드: | + | ==== LLVM 설치 ==== |
- | MD5 합계 다운로드: 85d25f04cbc4c1a20e3a1ab2a2c522cd | + | LLVM 빌드 시스템에는 두 개의 추가 타르볼 '' |
- | 다운로드 크기: 2.4 MB | + | <code bash> |
+ | tar -xf ../ | ||
+ | tar -xf ../ | ||
+ | sed '/ | ||
+ | -i CMakeLists.txt | ||
+ | sed '/ | ||
+ | -i cmake/ | ||
+ | </ | ||
- | LLVM 종속성 | + | 다음과 같이 '' |
- | 필수 | + | |
- | CMake-3.28.3 | + | |
- | 옵션 | + | <code bash> |
- | Doxygen-1.10.0, git-2.44.0, Graphviz-10.0.1, libxml2-2.12.5, Pygments-2.17.2, rsync-3.2.7(테스트용), | + | tar -xf ../clang-17.0.6.src.tar.xz -C tools && |
+ | mv tools/clang-17.0.6.src tools/ | ||
+ | </ | ||
- | LLVM 설치 | + | '' |
- | LLVM 빌드 | + | |
- | *** Translated with www.DeepL.com/ | + | <code bash> |
+ | tar -xf ../ | ||
+ | mv projects/ | ||
+ | sed '/ | ||
+ | -i projects/ | ||
+ | </ | ||
+ | |||
+ | 이 패키지에는 LFS의 시스템 파이썬인 [[.: | ||
+ | |||
+ | <code bash> | ||
+ | grep -rl '# | ||
+ | </ | ||
+ | |||
+ | clang를 다운로드 받았다면 SSP((Stack Smash Protection))를 기본적으로 활성화 하는 패치를 적용합니다. | ||
+ | |||
+ | <code bash> | ||
+ | patch -Np2 -d tools/clang < | ||
+ | </ | ||
+ | |||
+ | compiler-rt를 다운로드한 경우 clang에서 기본 SSP 활성화로 인해 영향받은 테스트를 수정하세요. | ||
+ | |||
+ | <code bash> | ||
+ | sed ' | ||
+ | -i projects/ | ||
+ | </ | ||
+ | |||
+ | 다음과 같이 | ||
+ | |||
+ | <code bash> | ||
+ | mkdir -v build && | ||
+ | cd build && | ||
+ | |||
+ | CC=gcc CXX=g++ | ||
+ | cmake -DCMAKE_INSTALL_PREFIX=/ | ||
+ | -DLLVM_ENABLE_FFI=ON | ||
+ | -DCMAKE_BUILD_TYPE=Release | ||
+ | -DLLVM_BUILD_LLVM_DYLIB=ON | ||
+ | -DLLVM_LINK_LLVM_DYLIB=ON | ||
+ | -DLLVM_ENABLE_RTTI=ON | ||
+ | -DLLVM_TARGETS_TO_BUILD=" | ||
+ | -DLLVM_BINUTILS_INCDIR=/ | ||
+ | -DLLVM_INCLUDE_BENCHMARKS=OFF | ||
+ | -DCLANG_DEFAULT_PIE_ON_LINUX=ON | ||
+ | -Wno-dev -G Ninja .. && | ||
+ | ninja | ||
+ | </ | ||
+ | |||
+ | [[.: | ||
+ | |||
+ | <code bash> | ||
+ | cmake -DLLVM_BUILD_DOCS=ON | ||
+ | -DLLVM_ENABLE_SPHINX=ON | ||
+ | -DSPHINX_WARNINGS_AS_ERRORS=OFF \ | ||
+ | -Wno-dev -G Ninja .. && | ||
+ | ninja docs-llvm-html | ||
+ | </ | ||
+ | |||
+ | clang 문서도 생성합니다. | ||
+ | |||
+ | <code bash> | ||
+ | ninja docs-clang-html docs-clang-man | ||
+ | </ | ||
+ | |||
+ | 테스트를 수행하려면 일부 시스템에서 종료되지 않는 문제가 발생하는 테스트를 제거합니다. | ||
+ | |||
+ | <code bash> | ||
+ | rm -f ../ | ||
+ | </ | ||
+ | |||
+ | LLVM 테스트 스위트는 많은 코어 덤프 파일을 생성할 수 있습니다. 이러한 파일은 많은 양의 디스크 공간을 차지하며 코어 덤프 프로세스로 인해 테스트 속도가 상당히 느려질 수 있습니다. 코어 덤프를 비활성화한 상태에서 결과를 테스트하려면 [[.: | ||
+ | |||
+ | <code bash> | ||
+ | systemctl --user start dbus && | ||
+ | systemd-run --user --pty -d -G -p LimitCORE=0 ninja check-all | ||
+ | </ | ||
+ | |||
+ | ninja에 -jN(N이 숫자로 대체됨)을 전달하면 테스트는 N개의 | ||
+ | |||
+ | 이제 //root// 사용자로 | ||
+ | |||
+ | <code bash> | ||
+ | ninja install && | ||
+ | cp bin/ | ||
+ | </ | ||
+ | |||
+ | 위의 명령으로 | ||
+ | |||
+ | <code bash> | ||
+ | install | ||
+ | mv -v / | ||
+ | rmdir -v --ignore-fail-on-non-empty / | ||
+ | </ | ||
+ | |||
+ | clang 문서를 빌드했다면 설치가 완료되었지만 적절한 위치로 이동해야 합니다. 다시 //root// 사용자로 실행합니다. | ||
+ | |||
+ | <code bash> | ||
+ | install -v -d -m755 / | ||
+ | mv -v / | ||
+ | rmdir -v --ignore-fail-on-non-empty / | ||
+ | </ | ||
+ | |||
+ | ==== 명령 설명 ==== | ||
+ | |||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | |||
+ | ==== 내용 ==== | ||
+ | |||
+ | * **설치한 프로그램**: | ||
+ | * **설치한 라이브러리**: | ||
+ | * **설치한 디렉토리**: | ||
+ | |||
+ | === 간략한 설명 === | ||
+ | |||
+ | * **amdgpu-arch** \\ 설치된 AMD GPU를 나열하며, | ||
+ | * **analyze-build** \\ 정적 분석 도구 | ||
+ | * **bugpoint** \\ 자동 테스트 케이스 감소 도구 | ||
+ | * **c-index-test** \\ libclang API를 테스트하고 그 사용법을 보여주는 데 사용됩니다. | ||
+ | * **clang** \\ Clang C, C++ 및 Objective-C 컴파일러입니다. | ||
+ | * **clang-check** \\ 정적 코드 분석을 수행하고 추상 구문 트리(AST: Abstract Syntax Trees)를 표시하는 도구입니다. | ||
+ | * **clang-extdef-mapping** \\ 소스 파일에서 외부 정의의 USR((Unified Symbol Resolution)) 이름과 위치를 수집하는 도구입니다. | ||
+ | * **clang-format** \\ C/ | ||
+ | * **clang-linker-wrapper** \\ 호스트 링커에 대한 래퍼 유틸리티입니다. | ||
+ | * **clang-offload-bundler** \\ 공통 소스 파일과 관련된 OpenMP 오프로드 파일을 번들링/ | ||
+ | * **clang-offload-packager** \\ 여러 객체 파일을 단일 바이너리로 번들링하는 도구로, 오프로드 코드를 포함하는 팻 바이너리를 만드는 데 사용할 | ||
+ | * **clang-refactor** \\ C, C++ 및 Objective-C를 위한 Clang 기반 리팩터링 도구입니다. | ||
+ | * **clang-rename** \\ C/C++ 프로그램에서 심볼 이름을 바꾸는 도구입니다. | ||
+ | * **clang-scan-deps** \\ 소스 파일에서 종속성을 검사하는 도구입니다. | ||
+ | * **diagtool** \\ clang에서 진단을 처리하는 도구의 조합입니다. | ||
+ | * **FileCheck** \\ 두 개의 파일(하나는 표준 입력에서, 다른 | ||
+ | * **dsymutil** \\ 보관된 DWARF 디버그 심볼 파일을 조작하는 데 사용되는 도구로, Darwin 명령인 '' | ||
+ | * **git-clang-format** \\ git으로 생성된 패치에 대해 clang-format을 실행합니다([[.: | ||
+ | * **hmaptool** \\ 헤더 맵을 덤프하고 구성하는 파이썬 도구이다. | ||
+ | * **intercept-build** \\ 프로젝트의 빌드 명령어 데이터베이스를 생성한다. | ||
+ | * **llc** \\ LLVM 정적 컴파일러 | ||
+ | * **lli** \\ LLVM 비트코드에서 프로그램을 직접 실행하는 데 사용됩니다. | ||
+ | * **llvm-addr2line** \\ 주소를 파일 | ||
+ | * **llvm-ar** \\ LLVM 아카이버 | ||
+ | * **llvm-as** \\ LLVM 어셈블러 | ||
+ | * **llvm-bcanalyzer** \\ LLVM 비트코드 분석기 | ||
+ | * **llvm-bitcode-strip** \\ 객체에서 LLVM 비트코드를 스트립합니다. | ||
+ | * **llvm-cat** \\ LLVM 모듈을 연결하는 도구입니다. | ||
+ | * **llvm-cfi-verify** \\ 제어 흐름 무결성이 제공된 오브젝트 파일, DSO 또는 바이너리에서 모든 간접 제어 흐름 명령어를 보호하는지 확인합니다. | ||
+ | * **llvm-config** \\ LLVM 컴파일 옵션을 출력합니다 | ||
+ | * **llvm-cov** \\ 커버리지 정보를 출력하는 데 사용됩니다. | ||
+ | * **llvm-c-test** \\ 바이트코드 디스어셈블러입니다. | ||
+ | * **llvm-cvtres** \\ Microsoft 리소스 파일을 COFF로 변환하는 도구입니다. | ||
+ | * **llvm-cxxdump** \\ C++ ABI 데이터 덤퍼로 사용됩니다. | ||
+ | * **llvm-cxxfilt** \\ llvm 코드에서 C++ 심볼을 분리하는 데 사용됩니다. | ||
+ | * **llvm-cxxmap** \\ C++ 엉클어진 심볼을 다시 매핑하는 데 사용됩니다. | ||
+ | * **llvm-debuginfo-analyzer** \\ 저수준 디버그 정보의 논리적 표현을 출력합니다. | ||
+ | * **llvm-debuginfod** \\ 제거된 바이너리를 분석하기 위해 HTTP API를 통해 | ||
+ | * **llvm-debuginfod-find** \\ 디버그인포드 아티팩트를 찾기 위한 llvm-debuginfod 데몬에 대한 인터페이스입니다. | ||
+ | * **llvm-diff** \\ LLVM 구조적 ' | ||
+ | * **llvm-dis** \\ LLVM 디스어셈블러 | ||
+ | * **llvm-dwarfdump** \\ 오브젝트 파일에 있는 DWARF 섹션의 내용을 출력합니다. | ||
+ | * **llvm-dwarfutil** \\ 디버그 정보를 복사하고 조작하는 도구입니다. | ||
+ | * **llvm-dwp** \\ 분할된 DWARF 파일을 병합합니다 | ||
+ | * **llvm-elfabi** \\ ELF 바이너리의 ABI에 대한 정보를 읽는 데 사용됩니다. | ||
+ | * **llvm-exegesis** \\ LLVM에서 사용 가능한 정보를 사용하여 지연 시간이나 포트 분해와 같은 호스트 머신 명령어 특성을 측정하는 벤치마킹 툴입니다. | ||
+ | * **llvm-extract** \\ LLVM 모듈에서 함수를 추출하는 데 사용됩니다. | ||
+ | * **llvm-gsymutil** \\ 메모리 주소를 함수 이름과 소스 파일 줄로 변환하는 GSYM 심볼리케이션 포맷 파일을 처리하는 데 사용됩니다. 이 파일은 DWARF 또는 브레이크패드 파일보다 작습니다. | ||
+ | * **llvm-ifs** \\ 인터페이스 스텁을 오브젝트 파일과 병합하는 데 사용됩니다. | ||
+ | * **llvm-install-name-tool** \\ 로드 명령을 MachO 바이너리 형식으로 다시 작성하는 데 사용됩니다. | ||
+ | * **llvm-jitlink** \\ 재배치 가능한 객체 파일을 구문 분석하여 대상 프로세스에서 해당 내용을 실행 가능하게 만드는 데 사용됩니다. | ||
+ | * **llvm-libtool-darwin** \\ Darwin 기반 | ||
+ | * **llvm-link** \\ LLVM 링커 | ||
+ | * **llvm-lipo** \\ MachO 파일에서 범용 바이너리를 생성하는 데 사용됩니다. | ||
+ | * **llvm-lto** \\ LLVM LTO(링크 시간 최적화) 링커입니다. | ||
+ | * **llvm-lto2** \\ Resolution 기반 LTO 인터페이스를 위한 테스트 하네스입니다. | ||
+ | * **llvm-mc** \\ 독립형 머신 코드 어셈블러/ | ||
+ | * **llvm-mca** \\ 머신 코드의 성능을 정적으로 측정하는 성능 분석 툴입니다. | ||
+ | * **llvm-ml** \\ LLVM에서 제공하는 머신 코드를 위한 playground 입니다. | ||
+ | * **llvm-modextract** \\ 멀티모듈 비트코드 파일에서 하나의 모듈을 추출하는 도구입니다. | ||
+ | * **llvm-mt** \\ 나란히 배치된 어셈블리 매니페스트에서 서명된 파일과 카탈로그를 생성하는 도구입니다(Microsoft SDK에 사용됨). | ||
+ | * **llvm-nm** \\ LLVM 비트코드 및 오브젝트 파일의 심볼 테이블을 나열하는 데 사용됩니다. | ||
+ | * **llvm-objcopy** \\ LLVM의 객체 복사 도구 버전입니다. | ||
+ | * **llvm-objdump** \\ LLVM 객체 파일 덤퍼입니다. | ||
+ | * **llvm-opt-report** \\ YAML 최적화 레코드 파일에서 최적화 보고서를 생성하는 도구입니다. | ||
+ | * **llvm-pdbutil** \\ PDB(프로그램 데이터베이스) 덤퍼입니다. PDB는 Microsoft 형식입니다. | ||
+ | * **llvm-profdata** \\ 프로파일 데이터 파일을 | ||
+ | * **llvm-profgen** \\ LLVM SPGO 프로파일링 정보를 생성합니다. | ||
+ | * **llvm-ranlib** \\ LLVM 아카이브의 인덱스를 생성하는 데 사용됩니다. | ||
+ | * **llvm-rc** \\ 리소스 스크립트를 바이너리 리소스 파일로 컴파일하는 플랫폼 독립적인 도구입니다. | ||
+ | * **llvm-readobj** \\ 오브젝트 파일에 대한 저수준 형식별 정보를 표시합니다. | ||
+ | * **llvm-reduce** \\ 테스트 스위트를 실행할 때 테스트 케이스를 자동으로 줄이는 데 사용됩니다. | ||
+ | * **llvm-remark-size-diff** \\ 두 주석 파일 간의 명령어 수와 스택 크기 주석의 차이를 보고합니다. | ||
+ | * **llvm-remarkutil** \\ 주석 파일을 비트스트림과 YAML 간에 변환하거나 주석 파일에 함수 명령어 수 정보를 인쇄합니다. | ||
+ | * **llvm-rtdyld** \\ LLVM MC-JIT 도구 | ||
+ | * **llvm-size** \\ LLVM 객체 크기 덤퍼 | ||
+ | * **llvm-split** \\ LLVM 모듈 스플리터 | ||
+ | * **llvm-stress** \\ 임의의 .ll 파일을 생성하는 데 사용됩니다. | ||
+ | * **llvm-strings** \\ 바이너리(객체 파일, 실행 파일 또는 아카이브 라이브러리)에서 찾은 문자열을 인쇄합니다. | ||
+ | * **llvm-symbolizer** \\ 주소를 소스 코드 위치로 변환합니다. | ||
+ | * **llvm-tblgen** \\ LLVM 대상 설명을 C++ 코드 | ||
+ | * **llvm-tli-checker** \\ LLVM 타깃 라이브러리 정보 대 SDK 검사기입니다. | ||
+ | * **llvm-undname** \\ 이름 풀기 | ||
+ | * **llvm-xray** \\ Google의 XRay 함수 호출 추적 시스템 구현입니다. | ||
+ | * **nvptx-arch** \\ 설치된 NVIDIA GPU를 나열하며, 런타임에 BLFS의 일부가 아닌 libcuda.so가 필요합니다. | ||
+ | * **opt** \\ LLVM 옵티마이저 | ||
+ | * **sancov** \\ 세니타이져 커버리지 처리 도구 | ||
+ | * **sanstats** \\ 세니타이져 통계 처리 도구 | ||
+ | * **scan-build** \\ Clang 정적 분석기를 호출하는 Perl 스크립트입니다. | ||
+ | * **scan-build-py** \\ Clang 정적 분석기를 호출하는 Python 스크립트입니다. | ||
+ | | ||
+ | * **split-file** \\ 입력 파일을 정규식으로 구분된 여러 부분으로 분할합니다. | ||
+ | * **verify-uselistorder** \\ 사용 목록 순서를 확인하는 LLVM 도구입니다. | ||