我正在从Scintilla网站编译诱饵示例。我在编译它方面运气不佳。我可以很好地编译闪烁体本身,以及scite,但诱饵是另一回事。当我尝试使用提供的Makefile进行编译时,我会得到以下错误:
bait.c:1:21: fatal error: gtk/gtk.h: No such file or directory
我有GTK,并且使用不同版本的GTK。我试过了。我做什么似乎都无关紧要。我在互联网上搜索帮助,阅读了一页又一页的手册,但我就是不知道问题出在哪里。如果我没有得到那个错误,那我就再得到一个。
这是原始的makefile:
.SUFFIXES: .c .o .h .a
INCLUDEDIRS=-I../scintilla/include
CXXFLAGS= -DGTK -DSCI_LEXER -W -Wall
LEXEROBJS=$(wildcard ../scintilla/gtk/Lex*.o)
all: bait
shiz:
gcc `pkg-config --cflags gtk+-2.0` $(INCLUDEDIRS) $(CXXFLAGS) -c $< -o $@
bait: bait.o $(LEXEROBJS) ../scintilla/bin/scintilla.a
gcc `pkg-config --libs gtk+-2.0 gthread-2.0` -lstdc++ -DGTK $^ -o $@
clean:
rm -rf bait *.o
我也试过使用codebrainz中的GtkScintilla。我甚至做不到。我总是收到上面的错误,或者一个错误说:
fatal error: gtk/gtk.h: No such file or directory
我真的很感谢在这方面的任何帮助。非常感谢。
编辑:我使用的是Linux Mint
回到这个。。。如果你已经解决了这个问题,请告诉我。现在的情况是,这比它的价值更麻烦。:)
我是这么做的:
- 在我的虚拟盒子上安装Mint 13
- libgtk-3-dev(及其支持包)
- 验证我是否可以使用
pkg-config --cflags --libs gtk+-3.0
构建 - 找到gtk.h(
/usr/include/gtk-3.0/gtk/gtk.h
)和支持文件 - 下载诱饵示例
问题是:
- bait的Makefile引用了gtk+-2.0,您需要将其更改为3.0
- bait的Makefile要求您在一个特定的目录中构建(注意
INCLUDEDIRS
需要您在闪烁目录中 - 需要构建archive闪烁器.a(它没有提供,是bait.o所必需的)
-
构建档案需要修改makefile(注释掉以下几行:
ifdef GTK3
else
GTKVERSION=gtk+-2.0
endif
-
一旦你修复了这个问题并构建了档案,在
ScintillaGTK.cxx:(.text+0x1374)
等中还有大约一百万个未定义的引用。。
不管怎样。我会再给它一点时间,如果你自己解决这个问题,请告诉我!
我已经完成了这个makefile
##### Makefile #####
# Make file for bait on Linux or compatible OS
# Released to the public domain 2000 by Neil Hodgson neilh@scintilla.org
# This makefile tested with GCC 3.2 and GNOME 2.0
.SUFFIXES: .c .o .h .a
ifdef GTK3
GTKVERSION=gtk+-3.0
else
GTKVERSION=gtk+-2.0
endif
INCLUDEDIRS=-I../scintilla/include
CXXFLAGS= -DGTK -DSCI_LEXER -W -Wall
LEXEROBJS=$(wildcard ../scintilla/gtk/Lex*.o)
all: bait
.c.o:
gcc `pkg-config --cflags $(GTKVERSION)` $(INCLUDEDIRS) $(CXXFLAGS) -c $< -o $@
bait: bait.o $(LEXEROBJS) ../scintilla/bin/scintilla.a
gcc -DGTK $^ -o $@ -lstdc++ `pkg-config --libs $(GTKVERSION) gthread-2.0` -lm -lgmodule-2.0
clean:
rm -rf bait *.o