Solaris 11에 설치한 후 GCC-5는 어디에 있습니까?

Solaris 11에 설치한 후 GCC-5는 어디에 있습니까?

제 무지를 용서해주세요... 저는 관심 있는 C/C++ 라이브러리를 테스트하기 위해서만 Solaris를 사용합니다. 저는 Solaris 관리자나 Solaris 사용자가 아닙니다.

지원되는 C++ 컴파일러가 필요했기 때문에 Solaris 11.3 x86에 GCC-5를 설치했습니다 -std=c++11(아래 패키지 출력 참조). Sun의 기본 GCC는 4.8이며 C++11을 제대로 지원하지 않습니다(또는 전혀 지원하지 않습니다).

불행히도 설치 후 찾을 수 없습니다.

$ g++-5 --version
-bash: g++-5: command not found  

$ sudo find /usr -name gcc-5
$ sudo find /bin -name gcc-5
$

완전성을 위해:

$ /bin/gcc --version
gcc (GCC) 4.8.2
...

$ ls -l /usr/bin/gcc
lrwxrwxrwx   1 root   root   18 Jun  7  2016 /usr/bin/gcc -> ../gcc/4.8/bin/gcc

$ which gcc-5
no gcc-5 in /usr/local/bin /usr/local/sbin /bin /sbin /usr/bin /usr/sbin /usr/sfw/bin

컴파일러는 어디에 있나요?


~에 따르면Oracle Solaris 11에 GCC 설치/usr/bin/gcc스택 오버플로에서는 심볼릭 링크로 존재해야 합니다. 그러나 대답은 약간 벗어난 것 같습니다.

$ /usr/bin/gcc --version
gcc (GCC) 4.8.2
...

~에 따르면Solaris 11에는 GCC가 없으며 서버가 배포되었습니다.서버 장애 관련:

/usr/sfw/binSolaris 10에 번들로 제공되는 gcc의 경로입니다. Solaris 11.1에서는 설치 후 gcc를 다음 /usr/bin에 대한 심볼릭 링크로 직접 사용할 수 있습니다./usr/gcc/<version>/bin/gcc

답변도 좀 잘못된 것 같습니다.


$ sudo pkg install --accept gcc-5
------------------------------------------------------------
Package: pkg://solaris/release/[email protected],5.12-5.12.0.0.0.115.0:20170111T175931Z
License: evaluation

This software has been made available for evaluation purposes only.
See http://www.oracle.com/technetwork/server-storage/solaris11/technologies/foss-evaluation-program-2586275.html for further information.        

           Packages to install:  2
       Create boot environment: No
Create backup boot environment: No

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                2/2           8/8      0.0/0.0 17.4k/s

PHASE                                          ITEMS
Installing new actions                         37/37
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done
Updating package cache                           2/2

설치 후 gcc-5:

$ find / -name 'gcc*' 2>/dev/null
/usr/share/vim/vim73/compiler/gcc.vim
/usr/share/gcc-4.8.2
/usr/share/man/man1/gcc.1
/usr/gcc
/usr/gcc/4.8/bin/gcc-nm
/usr/gcc/4.8/bin/gcc-ranlib
/usr/gcc/4.8/bin/gcc
/usr/gcc/4.8/bin/gcc-ar
/usr/gcc/4.8/lib/gcc
/usr/gcc/4.8/lib/gcc/i386-pc-solaris2.11/4.8.2/plugin/include/ada/gcc-interface
/usr/gcc/4.8/lib/gcc/i386-pc-solaris2.11/4.8.2/plugin/include/gcc-plugin.h
/usr/gcc/4.8/share/locale/de/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/ja/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/fr/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/zh_CN/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/zh_TW/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/es/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/gcc-4.8.2
/usr/gcc/4.8/share/info/gccinstall.info
/usr/gcc/4.8/share/info/gccint.info
/usr/gcc/4.8/share/info/gcc.info
/usr/gcc/4.8/share/man/man1/gcc.1
/usr/bin/gcc
/usr/local/share/emacs/24.5/lisp/cedet/semantic/bovine/gcc.el
/usr/local/share/emacs/24.5/lisp/cedet/semantic/bovine/gcc.elc
/usr/include/gc/atomic_ops/sysdeps/gcc
/usr/include/avahi-common/gccmacro.h
/usr/include/pulse/gccmacro.h
/export/home/jwalton/botan/src/scripts/ci/circle/gcc-sanitizer.sh
/export/home/jwalton/botan/src/scripts/ci/circle/gcc-static-debug.sh
/export/home/jwalton/botan/src/scripts/ci/circle/gcc-shared-debug.sh
/export/home/jwalton/botan/src/build-data/cc/gcc.txt
/export/home/jwalton/zlib-1.2.8/contrib/gcc_gvmat64
/opt/developerstudio12.5/lib/compilers/CC-gcc/lib/gcc
/opt/developerstudio12.5/lib/compilers/CC-gcc/gcc_version.map
/opt/solarisstudio12.4/lib/compilers/CC-gcc/gcc_version.map
/opt/solarisstudio12.4/lib/compilers/CC-gcc/lib/gcc

그리고:

~$ pkg search -l gcc | grep ^basename
basename             dir    opt/developerstudio12.5/lib/compilers/CC-gcc/lib/gcc               pkg:/developer/developerstudio-125/library/[email protected]
basename             dir    opt/solarisstudio12.4/lib/compilers/CC-gcc/lib/gcc                 pkg:/developer/solarisstudio-124/library/[email protected]
basename             dir    usr/include/gc/atomic_ops/sysdeps/gcc                              pkg:/library/[email protected]
basename                    link   usr/bin/gcc                                                        pkg:/developer/gcc-4/[email protected]
basename                    file   usr/gcc/4.8/bin/gcc                                                pkg:/developer/gcc-4/[email protected]
pkg: Search performance is degraded.

답변1

간단히 말해서:

# pkg change-facet \
      version-lock.system/library/gcc/gcc-c-runtime=false \
      version-lock.system/library/gcc/gcc-c++-runtime=false

그런 다음 다시 시도해 보세요.

그래서 문제는 gcc-5소위 "그룹" 패키지입니다. 즉, group(적어도 주로) 여러 종속성으로 구성됩니다. 종속성 group은 가능한 경우 설치되고, 그렇지 않으면 무시됩니다. 이 경우 하나 이상의 종속성을 설치할 수 없으므로 gcc-5무시되고 예상보다 적은 결과가 발생합니다.

이런 일이 발생하면(패키지 수가 적든, 패키지 버전이 다르든) 가장 먼저 해야 할 일은 pkg실제로 예상되는 것이 무엇인지 알려주는 것입니다. (이제 여기서 단절은 무엇을 기대해야 하는지를 아는 방법입니다. gcc-5해당 정보를 확인하는 방법을 모르거나 그렇게 해야 할 수도 있다는 사실조차 모르면서 이 질문에 어떻게 대답해야 할지 모르겠습니다.) 이 경우, 다음을 선택하십시오. 종속성을 한 번 살펴보면 도움이 될 수 있습니다. gcc-c-5(이 단계를 수행하면 gcc-c++-5여기에 표시된 것과 동일한 문제가 발생하지만 이를 하나의 답변으로 정리하고 싶었습니다.) 이는 pkg설치할 수 없다고 무시하라는 것이 gcc-c-5아니라 실제로 설치할 수 없는 이유에 대해 자세히 불평하라는 것입니다. 출력 내용이 다음에 수행할 작업에 대한 단서를 제공할 수 있기를 바랍니다.

# pkg install -nv gcc-5 gcc-c-5
Creating Plan (Solver setup): |
pkg install: No matching version of developer/gcc-5 can be installed:
  Reject:  pkg://solaris/developer/[email protected]
  Reason:  No version matching 'group' dependency developer/gcc/gcc-c++-5 can be installed
    ----------------------------------------
    Reject:  pkg://solaris/developer/gcc/[email protected]
    Reason:  No version matching 'require' dependency developer/gcc/gcc-c-5 can be installed
      ----------------------------------------
      Reject:  pkg://solaris/developer/gcc/[email protected]
      Reason:  No version matching 'require' dependency system/library/gcc/[email protected],5.11-5.12.0.0.0.115.0 can be installed
        ----------------------------------------
        Reject:  pkg://solaris/system/library/gcc/[email protected]
        Reason:  No version matching 'require' dependency system/library/gcc/[email protected],5.11-5.12.0.0.0.115.0 can be installed
          ----------------------------------------
          Reject:  pkg://solaris/system/library/gcc/[email protected]
          Reason:  This version is excluded by installed incorporation consolidation/userland/[email protected]
          ----------------------------------------
        Reason:  This version is excluded by installed incorporation consolidation/userland/[email protected]
        ----------------------------------------
      ----------------------------------------
    ----------------------------------------
No matching version of developer/gcc/gcc-c-5 can be installed:
  Reject:  pkg://solaris/developer/gcc/[email protected]
  Reason:  [already rejected; see above]

이와 같이 지저분한 솔버 출력이 나오면 일반적으로 가장 깊은 들여쓰기 문제를 찾아서 수정할 수 있는지 확인하고 싶을 것입니다. 이 경우, [email protected]설치한 업체에서 제외되어 설치가 불가능함을 알 수 있습니다 .

아마도 여담이 필요할 것입니다. 합병이란 무엇입니까? 그룹 패키지와 마찬가지로 incorporate종속성(이 경우 종속성)을 주로 제공하는 패키지 입니다 . 이러한 종속성으로 인해 실제로 패키지가 설치되는 것은 아니며 단지 설치될 수 있는 패키지에 제한이 있을 뿐입니다. 특히 병합은 설치된 [email protected]경우 해당 버전 범위 , 즉 최소 (포함) 및 최대 (제외) 또는 일치하는 값 foo내에 있어야 함 을 의미합니다 .[1.2, 1.3)1.21.31.2.x.y.z....

이 경우 시스템에 설치된 병합은 userland-incorporation설치에 필요한 버전과 호환되지 않는 제약 조건을 설정합니다.gcc-c-runtimegcc-c-runtimegcc-c-5

여기서 우리는 Solaris FOSS 평가 프로그램의 이상한 점 중 하나를 발견하게 됩니다. 제공된 패키지는 시스템의 나머지 부분과 잘 통합되지 않습니다. 이는 최신 버전의 Solaris에 설치되도록 설계되었습니다. 그러나 시스템은 최소한 설치가 가능하도록 합리적으로 조정될 수 있도록 제작되었습니다. 이 경우 여러 측면을 변경해야 합니다.

incorporateSolaris의 대부분의 FOSS 패키지는 종속성에 의해 제공되는 제약 조건을 완화할 수 있는 방식으로 병합됩니다 . 이름이 지정된 측면을 변경하여 version-lock.<pkg-name>이를 수행 할 수 있습니다 false. 이 경우에는 원하는 설치를 방해하는 두 개의 패키지가 있으므로 (위와 같이) 다음과 같습니다 gcc-c-runtime.gcc-c++-runtime

# pkg change-facet \
      version-lock.system/library/gcc/gcc-c-runtime=false \
      version-lock.system/library/gcc/gcc-c++-runtime=false

이는 약간의 출력을 생성하지만 많은 작업을 수행하지는 않는 것 같습니다. 완료되면 다시 시도할 수 있습니다.

# pkg install -nv gcc-5 gcc-c-5
           Packages to install:      20
            Packages to update:       2
           Mediators to change:       1
            Services to change:       1
     Estimated space available: 8.54 GB
Estimated space to be consumed: 1.49 GB
       Create boot environment:      No
Create backup boot environment:     Yes
          Rebuild boot archive:      No

Changed mediators:
  mediator gcc:
           version: None -> 5 (system default)

Changed packages:
solaris
  developer/assembler
    None -> 0.5.11,5.11-0.175.3.9.0.2.0:20160528T012706Z
  developer/gcc-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T170530Z
  developer/gcc/gcc-c++-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T164822Z
  developer/gcc/gcc-c-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165027Z
  developer/gcc/gcc-common-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165220Z
  developer/gcc/gcc-gfortran-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165431Z
  developer/gcc/gcc-gobjc-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165624Z
  developer/gnu-binutils
    None -> 2.23.1,5.11-0.175.3.0.0.30.0:20150821T164528Z
  library/gmp
    None -> 4.3.2,5.11-0.175.3.0.0.30.0:20150821T165358Z
  library/isl
    None -> 0.12.2,5.12-5.12.0.0.0.115.0:20170111T171737Z
  library/mpc
    None -> 0.9,5.11-0.175.3.0.0.30.0:20150821T165558Z
  library/mpfr
    None -> 2.4.2,5.11-0.175.3.0.0.30.0:20150821T165559Z
  release/evaluation
    None -> 1.0,5.12-5.12.0.0.0.115.0:20170111T175931Z
  system/header
    None -> 0.5.11,5.11-0.175.3.19.0.2.0:20170328T014052Z
  system/library/gcc/gcc-c++-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181800Z
  system/library/gcc/gcc-c-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181840Z
  system/library/gcc/gcc-gfortran-runtime
    None -> 4.8.2,5.11-0.175.3.0.0.30.0:20150821T172507Z
  system/library/gcc/gcc-gfortran-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181902Z
  system/library/gcc/gcc-gobjc-runtime
    None -> 4.8.2,5.11-0.175.3.0.0.30.0:20150821T172513Z
  system/library/gcc/gcc-gobjc-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181919Z
  system/library/gcc/gcc-c++-runtime
    4.8.2,5.11-0.175.3.0.0.30.0:20150821T172447Z -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181825Z
  system/library/gcc/gcc-c-runtime
    4.8.2,5.11-0.175.3.0.0.30.0:20150821T172458Z -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181848Z

그런데 보라, 우리는 실제로 뭔가를 담고 있는 여러 패키지를 설치했다. 이제 여기에서 입력하여 gcc --version실제로 5.4.0인지 확인할 수 있습니다 . 또한 우리가 잠금 해제한 두 가지 측면에 대한 패키지가 업그레이드되었으며 잠금 해제 후에 사용할 수 있게 될 수도 있습니다.

왜 우리가 다른 측면을 잠금 해제할 필요가 없는지 물을 수도 있습니다. 그 이유는 Solaris 11.3이 GCC 5를 제공하지 않으므로 패키지 버전에 대한 제한 사항을 제공하지 않기 때문입니다. 따라서 모든 gcc-*-5패키지는 이미 제한이 해제되어 있으므로 제한을 완화하기 위해 잠금을 해제할 필요가 없습니다.

gcc-gfortran-runtime버전 4.8에 및 gcc-gobjc-runtime패키지가 설치되어 있음 을 알 수 있습니다 . 그 이유는 여전히 제한되어 있지만 우리가 하는 어떤 것도 이러한 제한과 충돌하지 않기 때문입니다. 일관성을 위해 잠금을 해제한 다음 5.x 버전으로 업그레이드해야 합니다(또는 시도하기 전에 이미 이 작업을 수행한 경우 처음부터 잠금을 해제하면 됩니다).

답변2

이 시도:

ls -l /usr/bin/gcc

당신은 다음과 같은 것을 볼 수 있습니다

... /usr/bin/gcc -> ../gcc/4.8/bin/gcc

GCC 5.x가 있어야 합니다./usr/gcc/5.x/...

내 Solaris 11 설치에는 /usr/gcc.

고쳐 쓰다: 그리고 다음 버전 중 어느 것도 /usr/gcc5.x 버전이 아닙니다. 어디로 갔나요?

답변3

첫째, 의 목록이 pkg publisher유용할 것입니다. 그리고 ASApkg list |grep gcc

그리고 설치되지 않은 것 같습니다. 출력에는 (2) pkgs 및 (8) 파일이 설치되고 있는 것으로만 표시됩니다.

설치하려면 제한 사항을 해제해야 할 수도 있습니다. 설치 결과는 FOSS 평가 체인에서 설치하고 있음을 알려줍니다. 출력에 제공된 링크를 확인하는 것이 좋습니다.

Oracle Solaris 11.3용으로 선택된 FOSS 평가 패키지에 액세스하는 방법

또한: 일반적으로 pkg search gccpkg뿐만 아니라 무언가가 설치된 위치를 찾는 데 도움이 되어야 합니까? A는 pkg contents <pkg>pkg의 구성 요소를 찾는 데에도 유용합니다.

또한 gcc pkg는 모든 개발자 도구에 대해 여러 pkg를 설치해야 한다고 믿기 때문에 2개 대신 여러 pkg가 설치될 것으로 예상했습니다.

아마도 이것이 릴리스 저장소 아래에 원하는 패키지일까요? developer/gcc/gcc-c++-5

관련 정보