2013-02-18 17 views
5

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

Gtk +のコードを学習するためのリソースもありがとうございます。私が見つけたすべてのソースはバージョン2.x用ですが、私は3.6が最新バージョンだと思います。

私は繰り返し述べたいが、私はCコードだけに興味がある。私にC++やC#のメリットを説明してはいけません。それらのすべてを読んだことがあります。私はCのためにここにいるよありがとう!

+2

私はこの質問が過度に広範であり、異なるトピックを混在させるのではないかと心配しています。 Unix上でCコードをコンパイルすることは、それ自体の話題です。 Gtkコードをコンパイルすることは、そのアクティビティの特定のバージョンに過ぎません。あなたはたぶんCの入門書を拾うべきです。それ以降、Gtkコードをコンパイルすることは明らかになります。 – pmr

+2

質問は完全に有効ですが、誰かが本当に基本的な情報を得ることができないとは信じられません。http://www.google.com/search?q=compiling+gtkはGTK + 2の最初の行とGTK + 3番目は2番目のものです。 – ntd

答えて

15

まず、Cコードを書いてください。たとえば、 "hello_world_gtk.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アプリケーションに進むことができます。

+0

私はそれをコンパイルして実行している、私のインストールで何かが間違っていた。私は2.0しかインストールできませんでしたが、3.xバージョンはインストールできませんでした。 –

2

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

しかし、私ができる最善それに答えるために、あなたは単に「はexample.c」はあなたの元の名前です

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

を使用し、単一のソースファイルを持っていると仮定。ここ内訳です:あなたはすべての警告を参照してください(と、それらを修正する)ことができるように

  • は「-Wall」と「-Wextra」フラグを使用してください。

  • "std"フラグを使用してCの方言を設定します。 gccにはいくつかのものがあり、それらのほとんどをサポートしています。詳細は、マニュアルページまたはinfoページを参照してください。上記のように "c99"を使うことは悪い選択ではありません。

  • そして、ライブラリとインクルードを設定するためにpkg-configとコマンド置換(バッククォート)を使用します。あなたは一度に両方を行うことができますが、多くの人がpkg-configの2つの逆戻りバージョンで2回それを使用しています。バックティックは、コマンドの出力をティック内で置き換えます。コマンドラインでバッククォート内のpkg-configを実行してみると、それが何をするのかがわかります。

残念ながら、3.x GTKコード用のリソースは多くなく、そのほとんどはまだ2.xベースです。 gtkメーリングリストまたは参照マニュアルのいずれかに頼らざるを得ません。

GTK 3.xに関しては、コンパイルできない理由はGTK 2.xをベースにしている可能性が高いからです。より新しいディストリビューションでは、reposにGTK 3.xがあるかもしれません。マイMakefile

0

:GtkのドキュメントGetting Startedページから

LDLIBS = -lcurl -lpthread `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` 
+0

niceはgtk 3.0でも動作します:LDLIBS = -lcurl -lpthread 'pkg-config --cflags gtk + -3.0'' pkg-config --libs gtk + -3.0' – petermeissner

0

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

はまたpkg-configについての詳細を学ぶためにNikos C.'s Aswerを確認してください。

関連する問題