5

acプログラムの実行中(実行時)に利用可能な(システムにインストールされている)GCCバージョン(メジャーおよびマイナー)を見つける必要があります。つまり、プログラムで使用可能なgccのバージョンを抽出します(シェルにいてgcc --versionと入力したのと同じですが、acプログラムにあります)。

__GNUC__and__GNUC_MINOR__はコンパイル時にのみ役立ち、から関数を見つけましたがgnu_get_libc_version()gnu/libc_version.hlibcバージョンしか取得できず、GCCバージョンが必要です。GCCに似たようなものがあれば、それは素晴らしいことです...

これを行うためにシェルコマンドを呼び出さないようにしたいと思います。

4

3 に答える 3

17

簡単な方法があります:

$ gcc -dumpversion
4.6
于 2014-03-17T08:28:49.873 に答える
8

gccパラメータを指定してシェルコマンドを呼び出します--version; これを行う正しい方法です。それを行うために参照popen()してください。

__GNUC__または、でGCCを呼び出して、およびの値を出力するプログラムをコンパイルすることもできます__GNUC_MINOR__。ただし、問題のGCCがクロスコンパイル用に構成されている場合は機能しません。

別の方法は、バイナリでバージョン文字列を検索し、正しいものが得られること、形式が変更されないこと、バージョン文字列が十分に明確であり、十分に自信を持って認識できることを期待することです。

1.5語で:しないでください。

于 2012-05-09T12:41:32.413 に答える
5

利用可能な(システムにインストールされている)GCCバージョン(メジャーおよびマイナー)を確認する必要があります

あなたはその情報をどうするつもりですか?

あなたの質問に対する意味のある答えを得ることができないのは

  1. ユーザーはGCCをインストールしていない可能性があります/usr/bin
  2. システムの他の場所に5つの異なるバージョンがインストールされている可能性があります
  3. のふりをするバージョンが/usr/binあるかもしれませんが、実際には、、、、、などです。gcc-X.Ygcc-Z.WClangicc

しかし、意味のない答えを得ることを主張しpopen("gcc --version")、結果の出力を解析する場合。

于 2012-05-09T14:42:12.587 に答える