우분투에서 "uname gcc"가 작동하지 않는 이유

우분투에서 "uname gcc"가 작동하지 않는 이유

uname -a전체 시스템 이름과 세부 정보 등이 표시 된다는 것을 알고 있습니다 . 하지만 uname gcc내가 실행하고 있는 gcc 버전을 확인한 결과 반환되었습니다 Linux.그게 무슨 뜻이야?

Ubuntu86: $ uname gcc
Linux

이것은 제가 사용하고 있는 기계입니다(오래된 것으로 알고 있습니다).

Ubuntu86: $ uname -a
Linux ubuntu86 2.6.8.1-3-386 #1 Tue Oct 12 12:41:57 BST 2004 i686 GNU/Linux

이 컴퓨터에서 실행 중인 gcc 버전을 확인하는 방법은 무엇입니까?

다음을 입력하여 설치했습니다.

Ubuntu86: $ sudo apt-get install gcc

그래서 나는 gcc 버전이 설치되어 있다는 것을 알고 있지만 어떤 버전인지는 모릅니다.

답변1

첫 번째 질문의 경우: uname옵션이 전달되지 않으면 이에 상응하는 옵션이 시스템에 uname -s표시됩니다 .Linux

전달된 인수 gcc는 옵션이 아니므로(하이픈으로 시작하지 않음) 명령이 이를 무시합니다.

답변2

uname사용 중인 운영 체제의 이름을 표시합니다. 매개변수를 무시하고 일반적인 작업을 수행합니다. 설치된 소프트웨어의 버전은 표시되지 않습니다.

대부분의 명령 - gcc지원 --version매개변수를 포함하므로 gcc --version현재 GCC 버전이 표시됩니다.

답변3

두 번째 질문에 대한 대답은 다음과 같습니다. gcc -v
인쇄물의 마지막 줄에서 gcc시스템에 설치된 버전을 찾을 수 있습니다.

답변4

dpkg -lUbuntu를 포함한 Debian 기반 시스템에서는 (I 또는 one이 아닌 ell)을 사용하여 설치 상태 및 설치된 패키지 버전(패키지 이름을 알고 있는 경우)을 확인할 수 있습니다. 이 작업은 읽기 전용 작업이므로 일반적으로 루트 액세스가 필요하지 않습니다.

특정 파일을 소유한 패키지를 찾으려면 를 사용하십시오 dpkg -S. 다시 말하면 루트 액세스가 필요하지 않습니다.

두 가지를 합치면 다음과 같은 결과가 나옵니다.

$ dpkg -S $(which gcc)
gcc: /usr/bin/gcc
$ dpkg -l gcc
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version       Architecture  Description
+++-=================-=============-=============-=======================================
ii  gcc               4:4.7.2-1     amd64         GNU C compiler
$

4:4.7.2-1이는 내 특정 시스템에서 해당 아키텍처의 패키지 버전이 완전히 설치 및 구성(상태)되었음을 알려줍니다 .gccamd64ii

명령을 원하면 dpkg -l $(dpkg -S $(which gcc) | awk -F: '{print $1}')위의 명령 예와 동일한 출력이 표시 됩니다 dpkg -l gcc. 여기서는 awk를 사용하여 데이터를 분할 :하고 출력의 첫 번째 부분을 반환합니다.

패키지 버전이 프로그램 자체에서 보고한 버전을 반드시 반영하는 것은 아닙니다. 내가 생각하는 한, gcc --version이것은 gcc (Debian 4.7.2-5) 4.7.2모든 실제적인 목적에 "충분히 가깝습니다". 그러나 보고 있는 동작이 버그인지 여부를 알아내려는 경우에는 다를 수 있습니다.

더 일반적으로,프로그램에 임의의 인수를 전달하면 안 됩니다.그리고 일이 잘 풀릴 것이라고 기대합니다("일"에 대한 정의에 따라). 특정 상황에서는 uname무해 하지만 프로그램이 실제로 수행하고 싶지 않은 작업을 쉽게 수행할 수 있으며 일부 작업은 잠재적으로 위험할 수도 있습니다. 관련 명령의 매뉴얼 페이지를 확인하여 해당 명령이 허용하는 매개변수와 그 의미를 확인하십시오. (많은 콘솔 응용 프로그램은 인수 없이 바이너리 이름만 사용하여 호출할 때 매우 안전한 작업을 수행합니다. 많은 콘솔 응용 프로그램은 인수 없이 실행될 때 버전 및 저작권 정보를 표시합니다.

관련 정보