![우분투에서 "uname gcc"가 작동하지 않는 이유](https://linux55.com/image/4567/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%97%90%EC%84%9C%20%22uname%20gcc%22%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0.png)
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 -l
Ubuntu를 포함한 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
이는 내 특정 시스템에서 해당 아키텍처의 패키지 버전이 완전히 설치 및 구성(상태)되었음을 알려줍니다 .gcc
amd64
ii
명령을 원하면 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
무해 하지만 프로그램이 실제로 수행하고 싶지 않은 작업을 쉽게 수행할 수 있으며 일부 작업은 잠재적으로 위험할 수도 있습니다. 관련 명령의 매뉴얼 페이지를 확인하여 해당 명령이 허용하는 매개변수와 그 의미를 확인하십시오. (많은 콘솔 응용 프로그램은 인수 없이 바이너리 이름만 사용하여 호출할 때 매우 안전한 작업을 수행합니다. 많은 콘솔 응용 프로그램은 인수 없이 실행될 때 버전 및 저작권 정보를 표시합니다.