snu-sf-class / swpp202401

Principles and Practices of Software Development Main Repository
14 stars 4 forks source link

[Project] LLVM 버전 관련 문의 #35

Open haeeun125 opened 7 months ago

haeeun125 commented 7 months ago

분명히 llvm을 잘 설치해서 CTest를 구현하고 test를 만들고 있던 중이었습니다. 그런데 오늘 cmake -Bbuild를 해서 보니 갑자기 llvm 버전이 14.0.0이라고 에러가 발생하였습니다. 그 이전까지는 빌드가 잘 되었는데 갑자기 버전 에러가 발생하였습니다. 그래서 홈 디렉토리에 있는 llvm을 삭제했다가 다시 설치했는데 계속 14.0.0버전으로 나옵니다. 버전이 왜 다운그레이드 되는 건지, 그리고 install을 다시 해도 여전히 llvm버전이 14.0.0이라고 나오는데 어떻게 업그레이드 할 수 있을지 문의드립니다. 추가적으로, cmake에서도 버전이 3.22.1로 나오는 비슷한 버전 문제가 있었는데 삭제했다가 다시 설치하니까 3.28.3버전으로 다시 업그레이드 되었습니다.

strikef commented 7 months ago

CMake로 정확히 어떤 코드를 구성 및 빌드하신 건가요? 컴파일러 코드를 다시 빌드하신 건가요?

haeeun125 commented 7 months ago

아까는 ./src/lib/opt에 있는 CMakeLists.txt에 패스를 등록하고 테스트를 해보려고 add_opt_pass함수와 test를 적용해보다가 버전이 14.0.0이라는 에러가 처음으로 발생했습니다. 실행한 command는 다음과 같습니다. cd build ctest 버전이 낮다는 에러를 처음 보고, 분명히 전에는 프로젝트 컴파일이 잘 되었는데 이상해서 다시 cmake -GNinja -Bbuild 커맨드를 실행했을 때 CMake Error at CMakeLists.txt:9 (find_package): Could not find a configuration file for package "LLVM" that is compatible with requested version "18.1.0".

The following configuration files were considered but not accepted:

/usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.0
/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.0

-- Configuring incomplete, errors occurred! 위와 같은 에러가 발생했습니다. 제가 9번째 줄에 find_package(LLVM 18.1.0 REQUIRED CONFIG) 라는 라인을 추가했고, 어제는 분명히 이 라인을 포함한 상태에서 컴파일이 잘 되었었습니다. 그래서 버전을 확인해보니 clang --version 이 14.0.0으로 나옵니다.

그리고 저도 이상해서 지금 다시 cmake -GNinja -Bbuild를 실행해보니 또 에러 없이 컴파일이 됩니다.

문의드리고 싶은 부분은 1) 제가 필요 없는 라인을 추가해서 에러가 발생했던 걸까요? 그렇다면 지금은 왜 컴파일이 잘 되는 걸까요? 2) 일단 저는 제공해주신 스크립트로 llvm을 설치했는데 clang --version이 14.0.0으로 나오는 원인이 뭘까요?

strikef commented 7 months ago

CMake를 이용한 빌드를 구성할 때, 정확히 어떤 LLVM을 사용할 것인지 명시해주지 않으면 구성할 때마다 그때그때 다른 directory를 찾거나 이전에 찾았던 directory를 캐싱할 수 있습니다. 현재 컴파일러 리포지토리와 같이 제공된 빌드 스크립트를 (compile.sh) 보시면 -DLLVM_ROOT= 과 같은 식으로 사용할 LLVM을 정확히 명시합니다. 기존에 캐싱된 directory를 지우기 위해 build directory를 삭제하시고, LLVM_ROOT CMake 변수를 설정해서 빌드를 구성해보시기 바랍니다.

haeeun125 commented 7 months ago

이해했습니다 감사합니다 그런데 버전이 18.1.0이 아닌 14.0.0으로 나오는 이유는 무엇일까요?

strikef commented 7 months ago

출력된 메시지를 보면 모종의 이유로 패키지 매니저를 통해 LLVM 14 버전이 설치된 적이 있고, 이게 구성 시에 잡힌 것 같습니다.

haeeun125 commented 7 months ago

감사합니다.