gcc 다운그레이드 후 glib와 gcc 간의 불일치

gcc 다운그레이드 후 glib와 gcc 간의 불일치

일주일 Linux *** 5.10.41-1-MANJARO x86_64 GNU/Linux 전에 배포판을 업데이트했습니다.gcc와 gcc-lib버전 이지만 동료와 협력 11.1.0 해야 함gcc 10.2.0gcc-libs 10.2.0

다운그레이드 gcc하고 glib이를 기반으로 했습니다.가이드

이것은 문제가 되지 않습니다. 하지만 다른 것들은 깨질 것입니다.파이어폭스, 크롬 등 다음과 같은 오류가 발생합니다

firefox
/usr/lib/firefox/firefox: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib/firefox/firefox)

어떻게 다운그레이드할 수 있나요?걸프 협력 협의회그리고 내 생각에 동료 도서관은글립 혀

어떻게 대처해야 할지 모르겠어요글립 혀

sudo downgrade glib-
glib-compile-resources  glib-genmarshal         glib-mkenums
glib-compile-schemas    glib-gettextize 

다운그레이드해야 하나요?글립 혀그 물건이 그들 것인가요?

답변1

귀하가 링크한 문서에는 다음과 같은 내용이 나와 있습니다.

경고: 패키지를 다운그레이드하면 거의 항상 지원되지 않는 부분 업그레이드 상태가 됩니다. 이 지침은 패키지 다운그레이드의 결과를 이해하는 고급 사용자를 위한 것입니다.

이것이 바로 여기서 일어나는 일입니다. 이제 현재 설치된 소프트웨어(아마도 glibc가 아닌 다른 소프트웨어)와 호환되지 않는 종속성을 갖게 되었습니다. 따라서 롤백해야 합니다.

AB가 말했듯이 :

요즘에는 호스트 시스템에 이러한 문제가 발생하지 않도록 이전 소프트웨어(예: 이전 gcc)를 실행하는 컨테이너를 시작하기만 하면 됩니다. 그런데 gcc-libs, glibc2 또는 stdlibc++를 GLib와 혼동하지 마십시오.

docker이제 manjaro에서는 or 를 사용할 수 있습니다 podman. 둘 다 동일한 작업을 수행합니다.컨테이너, 이들은 본질적으로 "상자 안의" Linux 시스템이며 나머지 시스템과 잘 격리되어 있습니다. podman약간 더 현대적이며 루트 권한 없이 더 잘 실행되지만 docker와 동일한 명령 및 옵션을 지원합니다(가능한 경우).

예를 들어, podman( sudo pacman -S podman)을 설치한 후 다음을 실행할 수 있습니다.

podman run --name myfirstcontainer -it  -v /home/maxemilian:/data:Z manjarolinux/base

그것은 다운로드 run되고manzaro 이미지-it, 귀하가 소유한 것을 컨테이너에 표시되는 올륨 (자신의 소유권 포함 ) /home/maxemilian으로 바인딩하는 대화형 셸( )을 제공합니다 . 컨테이너는 종료 후에도 유지되며(선택됨 ) 를 사용하여 다시 시작할 수 있습니다 .v/dataZpodman ps -apodman start --attach myfirstcontainer

다운그레이드할 수 있습니다이내에그 용기, 밖에선 아무것도 만지지 마세요. 볼륨을 통해 컨테이너는 컴파일해야 하는 소스 파일에 액세스할 수 있습니다!

distcc컨테이너 내에서 "서버" 컴파일러를 실행하는 것은 매우 일반적입니다. 작동하려면 이를 추가해야 하며 , 예를 들어 컴파일러로 --publish 3632사용하는 대신 개발 컴퓨터(예: "일반" 만자로)에서 .gccdistcc

podman run -it --publish 3632 --name buildserver manjarolinux/base # gcc 설치, distcc distccd --daemon

노력하다! 파일 만들기 test.c:

#include <stdio.h>
int main() {
  printf("GCC %d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
  return 0;
}

달리기

export CC=distcc
export DISTCC_HOSTS=localhost
$CC -o test test.c
./test

관련 정보