저는 g++12가 필요한 일부 코드를 작업 중이며 Ubuntu 20.4.4에서 이 컴파일러를 얻는 방법을 알고 싶습니다.
소스에서 설치해야 하는 경우 어떻게 해야 합니까?
나는 homebrew와 몇 가지 다른 설치 프로그램을 사용하여 몇 가지를 시도했지만 지금까지 아무 것도 작동하지 않았습니다.
답변1
최신 LTS(장기 지원) 버전의 Ubuntu로 업데이트를 고려하고 있다면 지금이 좋은 시기일 수 있습니다. Ubuntu 22.04LTS를 apt install g++-12
사용하면 GCC 12와 함께 g++를 설치할 수 있습니다. 오래된 종속성에 의존하는 소프트웨어가 많지 않다면 Ubuntu를 업데이트하는 것이 아마도 가장 쉬운 방법일 것입니다 g++12
! ( podman
또는 컨테이너에서 쉽게 시도해 볼 수 있습니다 docker
. 여기서는 자세히 설명하지 않겠습니다.)
Ubuntu 20.04에 갇혀 있다면 가장 깨끗하고 간단한 방법은 g++12
22.04 패키지를 백포트하는 것입니다 g++12
. 이 경우 GCC를 구축하는 방법과 기존 컴파일러 또는 ABI를 방해하여 전체 시스템을 손상시키지 않는 경쟁 g++를 설치하는 방법을 배우는 것에 대해 걱정할 필요가 없습니다. Debian(및 그 다운스트림인 Ubuntu)은 이미 이를 학습하는 작업 부하를 맡았으므로 해당 도구를 사용하기만 하면 됩니다. 놀라운!
대략적으로 말하면 이 작업을 수행하는 프로세스는 다음과 같습니다.
Debian/Ubuntu 패키지 빌드 준비:
sudo apt update sudo apt install -y build-essential fakeroot dpkg-dev devscripts cmake debhelper-compat dh-python equivs
패키지 소스를 가져옵니다.
.dsc
파일에 대한 링크를 찾으려면 다음 링크를 찾아야 합니다 .포장 페이지:mkdir gcc-12 cd gcc-12 dget -u https://URL/OF/DSC/FILE.dsc
다음에서 빌드 종속성을 설치합니다
.dsc
.mk-build-deps -i gcc-12*.dsc
빌드 패키지:
cd gcc-12-somethingsomething dpkg-buildpackage -us -uc -ui -d
지금까지의 이론. 실제로 3단계는 실패합니다. GCC12는 너무 오래된 Ubuntu 20.04와 함께 제공되는 도구에 의존합니다. 특히 데비안 패키지는 최소한 2.37 이상이 필요함을 나타 g++11
냅니다 binutils
.
그게 정말 핵심이야나개인적으로 말하자면"최첨단 C++ 컴파일러가 필요한 일부 소프트웨어를 구축한다면 어쨌든 내 Ubuntu 20.04 환경에 맞지 않을 것이므로 보다 현대적인 Ubuntu로 업데이트해야 합니다.". 그래서 다시Ubuntu 22.04에 대한 내 제안은 다음과 같습니다., 그런 다음 apt install g++-12
.
문제를 참고 싶다면 수정을 시작 gcc-12-12.*/debian/control
하고 오직 의존 rules.conf
하게 될 것입니다 .rules2
일부 g++
대신 g++11
ADA 지원을 비활성화하고 요구 사항을 낮추는 binutils
등의 작업을 수행하세요.
그러나 데비안 사람들은 어떤 버전의 종속성을 사용할지, 어떤 수정 사항과 백포트를 포함할지에 대해 생각했을 것입니다. 바위길이에요. 이는 "기본" 소스 빌드보다 간단할 수 있지만 예상보다 GCC에 대해 더 많이 배울 수 있는 쉬운 방법이며 빌드를 시작하는 데 몇 시간 밖에 걸리지 않습니다.
솔직히 계속 반복하지만, 갑자기 최신 컴파일러가 필요하다고 생각된다면 지금이 최신 환경으로 업데이트할 좋은 시기입니다. 그 결과 고통은 줄어들고 혜택은 더 많아졌습니다.