Fedora Users Forum

Fedoraユーザのためのサポートフォーラム
現在時刻 - 2019年3月25日(月) 06:29

All times are UTC + 9 hours





新しいトピックを投稿する トピックへ返信する  [ 14 件の記事 ]  ページ移動 1, 2  次へ
作成者 メッセージ
 記事の件名: [解決済み]アプリケーションプログラミングについて
投稿記事Posted: 2009年1月09日(金) 22:17 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
アプリケーションプログラミングの勉強をするため、
にある
GTK/GNOMEによるGUIプログラミング †を参考にしながら行いました
使用しているOSは、fedora 9です

まず、
PDFドキュメント(9.1MB) をダウンロードし

開発パッケージがインストールされていないので
# yum install gtk2-devel
として、開発用パッケージ gtk2-develをインストールし

統合開発環境をインストールするので
#yum install anjuta glade2 devhelp gtranslato
rで 一度にインストール

# yum install gcc
でgcc コンパイラをインストール

yum install libgnomeui-devel
で、GNOME開発環境をインストールしました

しかし、PDFファイル23ページめの コンパイルで
$ gcc hello_world.c -o hello_world ‘pkg-config gtk+-2.0 --cflags --libs‘
としたところ

gcc: ‘pkg-config: そのようなファイルやディレクトリはありません
gcc: gtk+-2.0: そのようなファイルやディレクトリはありません
cc1: error: unrecognized command line option "-fcflags"
cc1: error: unrecognized command line option "-flibs‘"
というメッセージがでて先にすすめません

おそらく、‘pkg-config と gtk+-2.0 が必要とおもい
から最新版と思われる
pkg-config-0.23.tar.gz をダウンロードし、

$tar zxvf pkg-config-0.23.tar.gz
で解凍し
$cd pkg-config-0.23
のあとに
$./configure
$make
$make install としたのですが
インストールできません

なにか足りないものがあるのでしょうか ?


最後に編集したユーザー りなっくす初心者 [ 2009年1月19日(月) 00:00 ], 累計 1 回

トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月10日(土) 00:29 
オフライン
Site Admin
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
所在地: 東京都
たぶん,Fedoraでのパッケージ名は,「pkgconfig」です。yumで入ります。

gtk2-develはインストール済みのようですので,gtk+-2.0が認識されないのは,環境変数の設定の問題かと思われます。参照されたサイトにある「サンプルプログラムのソースコード(1.5 MB)」をダウンロードして展開すると,展開してできるgtk-sources-20070419の中のlesson/hello_worldの中に,hello_world.cとMakefileがあるので,下記のコマンドでコンパイルできると思います。

$ cd gtk-sources-20070419/lesson/hello_world
$ make


Makefileの中身をみて,環境変数についても勉強してみてはいかがでしょうか?

※ ブログでOpenGLのプログラミングとか記事にしていますけど,僕はプログラマーではないので,あまり詳しいことは分かりません。参照されたサイトはわかりやすいので,僕もGTKを使ったプログラムに挑戦してみたくなりました。


トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月12日(月) 15:51 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
#yum install pkgconfig
としたところ、
Package 1:pkgconfig-0.23-2.fc9.i386 already installed and latest version
と表示されたため、おそらくpkgconfigはインストール済みと思われます

$ cd gtk-sources-20070419/lesson/hello_world/
$ make
としたところ

gcc `pkg-config --cflags gtk+-2.0` -c -o hello_world.o hello_world.c
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
hello_world.c:1:21: error: gtk/gtk.h: そのようなファイルやディレクトリはありません
hello_world.c:3: error: expected ‘)’ before ‘*’ token
hello_world.c: In function ‘main’:
hello_world.c:8: error: ‘GtkWidget’ undeclared (first use in this function)
hello_world.c:8: error: (Each undeclared identifier is reported only once
hello_world.c:8: error: for each function it appears in.)
hello_world.c:8: error: ‘window’ undeclared (first use in this function)
hello_world.c:9: error: ‘button’ undeclared (first use in this function)
hello_world.c:13: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function)
hello_world.c:22: error: ‘gtk_main_quit’ undeclared (first use in this function)
hello_world.c:22: error: ‘NULL’ undeclared (first use in this function)
hello_world.c:24: error: ‘cb_button’ undeclared (first use in this function)
make: *** [hello_world.o] エラー 1

$ cat Makefile
でMakefile をのぞいてみましたが

CC = gcc

CFLAGS = `pkg-config --cflags gtk+-2.0`

LDFLAGS = `pkg-config --libs-only-L gtk+-2.0`

LIBS = `pkg-config --libs-only-l gtk+-2.0`

SRCS = hello_world.c

OBJS = $(SRCS:.c=.o)

PROGRAM = hello_world

all: $(PROGRAM)

$(PROGRAM): $(OBJS) $(HDRS)
$(CC) $(OBJS) $(LDFLAGS) $(LIBS) -o $(PROGRAM)

clean:; rm -f *.o *~ $(PROGRAM)

### End of Makefile

というかんじでした

最新版で
gtk+-2.14.7.tar.gz
がありましたのでこれをダウンロードし、インストールしてみようと思います


トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月12日(月) 22:50 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250
所在地: 兵庫県
間に合うかなぁ・・・?

とりあえず、エラーメッセージをよく読んでください。

コード:
gcc `pkg-config --cflags gtk+-2.0` -c -o hello_world.o hello_world.c
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found

ここで、pkg-configコマンドがgtk+-2.0の関連プログラムをビルドする際に必要となるビルドオプションを探すためにgtk+-2.0.pcってファイルを探しているんですが、それが見つからないといってます。

で、環境変数であるPKG_CONFIG_PATHに記された場所に見つからないから、多分そのパスのところにpcファイルを持ってきたらいいよ!
gtk+-2.0パッケージが見つかりませんでした!

というメッセージです。

ちょっと気掛かりなのは、gtk2-develパッケージをインストールしているにも関わらず、pkg-configが失敗しているということです。

試しに
コード:
$ pkg-config --list-all | grep gtk+-2.0

を試していただけますか? きちんと取れていれば
コード:
gtk+-2.0                    GTK+ - GTK+ Graphical UI Library (x11 target)

と返ってくるはずです。これが返ってこないということは、pkg-configコマンドがおかしいか、gtk2-develが正しく入っていないと思います。

ちなみに私の場合、
コード:
$ pkg-config gtk+-2.0 --cflags --libs

を実行すると、
コード:
-I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/freetype2  -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0

が返ってきます。


トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月12日(月) 23:29 
オフライン
Site Admin
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
所在地: 東京都
たぶん,コンパイルのオプションで,/usr/include/gtk-2.0へのパスが通っていないのでは?
ここをクリアしないと,gtkを入れ直しても状況は改善しないと思います。

…と書いていたら,code_air_edgeさんが書こうと思っていたことを書いてくれたので,以下省略。

code_air_edgeさんと同意見です。

家では,gtk2-develを入れたら,きちんと認識していました(F10なので,状況が違うのかも知れませんが)。ちなみに,gtk+-2.0.pcはなく,gtk-2.0.pcがありました。
$ gcc hello_world.c -o hello_world ‘pkg-config gtk+-2.0 --cflags --libs‘
は同様のエラーが出て通りませんが,makeは正常に実行できました。

[追記]バッククォーテーションを使えば正常に実行できます(上記は間違い)。
$ gcc hello_world.c -o hello_world `pkg-config gtk+-2.0 --cflags --libs`


トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月13日(火) 18:35 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
いろいろとありがとうございます

$pkg-config --list-all | grep gtk+-2.0
としたのですが、なにも出てきません

# yum install pkgconfig
としても
Package 1:pkgconfig-0.23-2.fc9.i386 already installed and latest version
となり

# yum install gtk2-devel
としても
Package gtk2-devel-2.12.12-1.fc9.i386 already installed and latest version
となってしまいます

$pkg-config gtk+-2.0 --cflags --libs
としても
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
となってしまいます

yum の結果をみてみたところ、pkg-config gtk2-devel
は入っているようなのですが・・・


トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月13日(火) 23:14 
オフライン
Site Admin
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
所在地: 東京都
いろいろと調べてみましたが,そのものズバリの回答はみつかりません。

やはり環境変数の問題かと思うのですが。

$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig
を実行してから,
$ pkg-config gtk+-2.0 --cflags --libs
を実行するとどうなりますか?


トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月13日(火) 23:21 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250
所在地: 兵庫県
なぜか送信した文面がすべて反映されていなくて凹んでいます・・・。

多分、原因は、最初のポストにあるpkg-configのソースからのインストールにあると思います。

vine_userさんのコメントにあるように、PKG_CONFIG_PATHを再設定しても構いませんが、
コード:
gcc hello_world.c -o hello_world `/usr/bin/pkg-config gtk+-2.0 --cflags --libs`

を実行してみてください。多分うまくいくと思います。

上のコマンドでうまく行ったなら、最初に入れてしまったpkg-configのソースからのバイナリはアンインストールしてください。アンインストールしてしまったら、/usr/binとか付けなくてもよくなります。

ほんとはバッククォーテーションとシングルクォーテーションの話とか書いてたんですけどね・・・。興味があればつっついてください。また書くのはもうしんどいやOrz


追記:ブラウザの履歴に残っていたので貼っておきます。7件めの投稿でした。

すみません、書こうと思って失念していたコトがありました。

最初のポストにて、pkg-configをソースからインストールしていらっしゃいますが、現在もそのままでしょうか?

その場合、おそらくは
/usr/local/bin/pkg-config
が実行されていると思います。yumにてインストールしたpkgconfigの場合、実行すべきコマンドは
/usr/bin/pkg-config
です。上のコマンドでは、おそらく$PKG_CONFIG_PATHに相当するのは/usr/local/lib/pkg-configでしょう。そのため、yumでインストールしたgtk2-develに含まれているgtk+-2.0.pcが見えていないのだと思います。

ひとまず、
コード:
$ gcc hello_world.c -o hello_world ‘/usr/bin/pkg-config gtk+-2.0 --cflags --libs`


でビルドしてみてください。これでうまくいくなら、ソースからインストールしたpkg-configはアンインストールしてしまいましょう。

※注意! ここを最初に注意すべきでした。上のコマンド、/usr/binをくくっているのは「バッククォーテーション」です。Shift+@で打てるやつです。「シングルクォーテーション」とはまったく意味合いが異なるので注意してください。

バッククォーテーションでくくった場合、その中身はコマンドの実行結果と置き換わります。
例:コマンドのパスを取得するコマンド「which」を普通に使うと
コード:
$ which pkg-config
/usr/bin/pkg-config

次に、そのファイルがどのパッケージに含まれるかを調べるrpmコマンドの-qfオプションを普通に使うと
コード:
$ rpm -qf /usr/bin/pkg-config
pkgconfig-0.23-3.fc10.x86_64

そしてバッククォーテーションのテクニックを使うと
コード:
$ rpm -qf `which pkg-config`
pkgconfig-0.23-3.fc10.x86_64

といった具合です。

知っておくと割と使い勝手がよいですよ。

余談:GUIアプリケーションなんかはビルドの際のリンカに引き渡すオプションがめちゃくちゃ長いです。そのため、列挙を簡単にするための機構としてpkg-configが考案されました。これが採用され始めたのは割と最近だったと思います。


最後に編集したユーザー code_air_edge [ 2009年1月13日(火) 23:29 ], 累計 1 回

トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月13日(火) 23:28 
オフライン
Site Admin
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
所在地: 東京都
すみません,僕がいろいろ書き直したりしていたせいかも知れません。

たしかに,「'」と「`」の書き間違えかも知れませんね。


トップへ
 
 記事の件名: Re: アプリケーションプログラミングについて
投稿記事Posted: 2009年1月14日(水) 21:45 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
---------
みなさん、いろいろとありがとうございます

まず、
$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig
とし、
$pkg-config gtk+-2.0 --cflags --libs
としましたが、結果は
Package xproto was not found in the pkg-config search path.
Perhaps you should add the directory containing `xproto.pc'
to the PKG_CONFIG_PATH environment variable
Package 'xproto', required by 'Xrender', not found

となりました

次に、
$gcc hello_world.c -o hello_world ‘/usr/bin/pkg-config gtk+-2.0 --cflags --libs`
としましたが、なにも起こりませんでした

$which pkg-config
とすると
/usr/local/bin/pkg-config
となります

$ rpm -qf /usr/bin/pkg-config
とすると
pkgconfig-0.23-2.fc9.i386
となりますが

$ rpm -qf `which pkg-config`
とすると
ファイル /usr/local/bin/pkg-config はどのパッケージにも属していません。
とかえってきます

これは、いちどソースからインストールした方を消したほうがいいのでしょうか?


トップへ
 
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 14 件の記事 ]  ページ移動 1, 2  次へ

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[0人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron

無料でマイフォーラムを作成する! · php-BB© · Internationalization Project · 不正利用を報告する · 使用条件/プライバシーポリシー
© Forums-Free.com 2009