Tôi đang tạo phần mềm trong C bằng cách sử dụng thư viện SDL và GTK + 3. Nỗ lực đầu tiên của tôi với GTK + 3 trên main.c cụ thể và Makefile của nó hoạt động tốt, nhưng khi tôi cố gắng thêm dự án GTK của tôi vào đoạn mã khác bằng Makefile "thực" của tôi, ngay cả khi tôi thêm cùng cờ cho GTK +3, tôi không thể biên dịch và gặp lỗi gtk/gtk.h file no found
. Tôi đã truy cập nhiều chủ đề về lỗi này nhưng tôi vẫn không thể làm cho nó hoạt động.'gtk/gtk.h' Ngay cả với pkg-config
Dưới đây là Makefile cũ của tôi, tiến hành mọi việc:
CC=clang
CPPFLAGS= `pkg-config --cflags gtk+-3.0`
CFLAGS= -Wall -Wextra -std=c99 -O2
LDFLAGS=
LDLIBS= `pkg-config --libs gtk+-3.0` `pkg-config gmodule-2.0 --libs`
SRC= main.c
OBJ= ${SRC:.c=.o}
all: main
main: ${OBJ} -lm
clean:
rm -f *~ *.o main
Và đây là một trong những tôi sử dụng cho dự án:
CC=clang
CPPFLAGS= `pkg-config --cflags sdl gtk+-3.0`
CFLAGS= -Wall -Wextra -Werror -std=c99 -O2 -pedantic
LDFLAGS=
LDLIBS= `pkg-config --libs sdl` `pkg-config --libs gtk+-3.0` `pkg-config gmodule-2.0 --libs` -lgtk -lgdk -lglib -lX11 -lXext -lSDL -lSDL_image -lm
SRCDIR = src
OBJDIR = obj
BINDIR = bin
TARGET = main
SOURCES := $(wildcard $(SRCDIR)/*.c)
INCLUDES := $(wildcard $(SRCDIR)/*.h)
DEPENDS := $(wildcard $(OBJDIR)/*.d)
OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
rm = rm -f
all: makedirs $(BINDIR)/$(TARGET)
$(BINDIR)/$(TARGET): $(OBJECTS)
@$(CC) $(OBJECTS) $(LDLIBS) -o [email protected]
@echo "Linking complete!"
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
@$(CC) $(CFLAGS) -c $< -o [email protected]
@echo "[OK] Compiled "$<""
makedirs:
@mkdir -p $(OBJDIR)
@mkdir -p $(BINDIR)
@echo "[OK] Created directories : $(BINDIR) $(OBJDIR)"
[....] etc
Và các lỗi:
src/main.c:2:14: fatal error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>
Si téc chở sự chú ý :)
[EDIT]
~
▶ pkg-config --libs gtk+-3.0
-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
~
▶ pkg-config --cflags sdl gtk+-3.0
-D_GNU_SOURCE=1 -D_REENTRANT -pthread -I/usr/include/SDL -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
Và tiêu đề của main.c:
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include "neural.h"
Xin lỗi, cho câu hỏi nhưng: bạn có tệp tiêu đề đó không? Nó phải ở trong gói gtk devel ... đầu ra của 'pkg-config' là gì? – MirkoBanchi
Tôi đã chỉnh sửa câu hỏi của mình, cảm ơn;) –
Tôi có debian và mọi cài đặt đều được cài đặt, khi tôi sử dụng Makefile đầu tiên, tôi có thể biên dịch và chạy phần mềm thử nghiệm bao gồm gtk/gtk.h –