8

検索して検索しましたが、本当に必要な情報が得られません。LinuxでGCCを使用してCで書き込むときに、Gtk+コードがどのようにコンパイルされるかを可能な限り完全かつ基本的に説明してください。バックティック、「c99」、.oファイルなど、まったく理解できないものがあります。

Gtk+コードを学ぶためのリソースもありがたいです。私が見つけたすべてのソースはバージョン2.xのものですが、3.6が現在のバージョンだと思います。

繰り返しになりますが、私はCコードにのみ興味があります。C ++またはC#の利点を説明しようとしないでください。すべて読んだことがあります。私はCのためにここにいます。ありがとう!

4

5 に答える 5

18

手始めに、「hello_world_gtk.c」と言うCコードを記述し、適切なコンパイラーとリンカーのフラグを使用して、それをコンパイルしてGtkに対してリンクします。これらのフラグは、pkg-configツールによって提供されます。必要なコンパイラフラグを取得するには、次のコマンドでそのツールを呼び出します。

pkg-config gtk + -2.0 --cflags

リンクフラグの場合:

pkg-config gtk + -2.0 --libs

バックティックを使用すると、pkg-configから出力を取得し、それを引数としてgccに渡すことができます。

gcc `pkg-config gtk + -2.0 --cflags` hello_world_gtk.c -o hello_world_gtk` pkg-config gtk + -2.0 --libs`

ただし、バッククォートを使用する必要はありません。必要に応じて、フラグを手動でコピーして貼り付けることができます。

Gtk 3の場合、「2.0」を「3.0」に置き換えます。pkg-configがパッケージを見つけられなかったと報告した場合は、Linuxディストリビューションで提供されているGtk開発パッケージをインストールしていません。

何かをオブジェクトファイルにコンパイルしてリンクする方法を一般的に理解していない場合は、Gtkから始めるのではなく、プレーンCから始める必要があります。コンパイルとリンクの絶対的な基本に慣れたら、Gtkアプリケーションに進むことができます。

于 2013-02-18T20:55:01.770 に答える
2

他の人が言ったように、あなたの質問は広すぎます。バッククォート (基本的なシェル構文)、".o" ファイルとは (基本的なプログラミング)、および GTK プログラミング (やや高度なプログラミング) について尋ねます。

しかし、できる限り答えるには、ソースファイルが1つしかないと仮定して、次を使用します

gcc -Wall -Wextra -std=c99 `pkg-config --cflags --libs gtk+-2.0` example.c -o example

ここで、「example.c」はソースの名前です。内訳は次のとおりです。

  • 「-Wall」フラグと「-Wextra」フラグを使用して、すべての警告を表示 (および修正) できるようにします。

  • C 方言を設定するには、「std」フラグを使用します。いくつかあり、gcc はそれらのほとんどを完全または部分的にサポートしています。詳細については、man ページまたは info ページを参照してください。上記のように「c99」を使用することは悪い選択ではありません。

  • また、pkg-config とコマンド置換 (つまり、バッククォート) を使用して、ライブラリとインクルードを設定します。両方を一度に実行できることに注意してください。ただし、多くの人は pkg-config の 2 つのバッククォート バージョンで 2 回使用します。バックティックは、ティック内のコマンドからの出力を置き換えます。コマンドラインで逆引用符内の pkg-config を単独で実行してみてください。その動作を確認できます。

残念ながら、3.x GTK コードのリソースは多くなく、そのほとんどはまだ 2.x ベースです。gtk メーリング リストまたはリファレンス マニュアルのいずれかに頼る必要があります。

GTK 3.x に関しては、コンパイルできない理由は、ディストリビューションが GTK 2.x ベースである可能性があります。新しいディストリビューションでは、リポジトリに GTK 3.x が含まれている場合があります。

于 2013-03-15T21:39:56.437 に答える
2

Gtk Docs Getting Startedページから:

gcc `pkg-config --cflags gtk+-3.0` -o example example.c `pkg-config --libs gtk+-3.0`

の詳細については、Nikos C. の Aswerも参照してくださいpkg-config

于 2016-12-23T19:44:56.813 に答える
0

私のMakefile

LDLIBS = -lcurl -lpthread `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
于 2014-06-25T11:14:00.460 に答える