0

GTK ライブラリを使用する小さなプロジェクトのメイクファイルを作成しようとしています。

# Compiler
cc = gcc

#Options for Development
CFLAGS = `pkg-config --cflags --libs gtk+-2.0`

all: pss

pss : main.o interface.o
#   $(cc) $(CFLAGS) -o pss main.o interface.o

main.o : main.c interface.h
interface.o : interface.c

pssが最終的な実行可能ファイルになるはずです。ただし、makefile は実行可能ファイルを作成しませんpss。を作成するための行を明示的に追加するとpss、リンク エラーが発生します。

asheesh:~/Source$ make
gcc `pkg-config --cflags --libs gtk+-2.0` -o pss main.o interface.o
interface.o: In function `interface':
interface.c:(.text+0x1e): undefined reference to `gtk_init'
interface.c:(.text+0x28): undefined reference to `gtk_window_new'
interface.c:(.text+0x38): undefined reference to `gtk_widget_show'
interface.c:(.text+0x3d): undefined reference to `gtk_main'
collect2: ld returned 1 exit status
make: *** [pss] Error 1

を使用して最終的な実行可能ファイルを作成するにはどうすればよいmakeですか?

ライブラリの依存関係を適切に処理するように makefile を変更しました。まだ動作していません。

#Options for Development
CFLAGS = `pkg-config --cflags gtk+-2.0`

#Libraries
LIBS   = `pkg-config --libs gtk+-2.0`

all: pss

pss : main.o interface.o
    $(cc) $(LIBS) $(CFLAGS) -o pss main.o interface.o

main.o : main.c interface.h
    $(cc) $(CFLAGS) -o main.o main.c interface.o


interface.o : interface.c
    $(cc) $(CFLAGS) $(LIBS) -o interface.o interface.c
4

3 に答える 3

2

コンパイル フェーズでインクルード ファイルが見つからないようです。ファイルのビルド方法を確認したところ、インクルード ファイルの場所を示すフラグ.oがありません。-Igtk

サフィックス規則を追加することができます:

.SUFFIXES: .c .o
.c.o:
        gcc -c `pkg-config --cflags gtk+-2.0` $<
于 2013-06-06T14:50:14.920 に答える