Ubuntuで「uname gcc」が機能しない理由

Ubuntuで「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

2番目の質問に対する答えは次のとおりです。gcc -v
プリントの最後の行で、gccシステムにインストールされているバージョンを見つけることができます。

答え4

dpkg -lUbuntu を含む Debian ベースのシステムでは、(I または one ではない ell) を使用して、インストール状態とインストールされているパッケージのバージョン (パッケージ名がわかっている場合) を確認できます。この操作は読み取り専用操作なので、通常はルートアクセスは必要ありません。

特定のファイルを所有するパッケージを見つけるには、を使用しますdpkg -S。つまり、ルートアクセスは不要です。

2つを組み合わせると、次のような結果が得られます。

$ 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無害ですが、プログラムが実際にやりたくないタスクを簡単に実行でき、一部のタスクは潜在的に危険な可能性があります。関連コマンドのマニュアルページを調べて、そのコマンドが許可するパラメーターとその意味を確認してください。 (多くのコンソールアプリケーションは、引数なしでバイナリ名のみを使用して呼び出すと非常に安全なタスクを実行します。多くのコンソールアプリケーションは、引数なしで実行されたときにバージョンと著作権情報を表示します。

関連情報