2

我正在尝试从 Scintilla 网站编译诱饵示例。我有零运气让它编译。我可以很好地编译 scintilla 本身,也可以编译 scite,但 bait 是另一回事。当我尝试使用提供的 Makefile 进行编译时,出现以下错误:

bait.c:1:21: fatal error: gtk/gtk.h: No such file or directory

我有 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

4

2 回答 2

1

回到这个......如果你已经解决了这个问题,请告诉我。它开始看起来是这样的麻烦多于它的价值。:)

这就是我所做的:

  1. 在我的虚拟盒子上安装 Mint 13
  2. libgtk-3-dev(和支持包)
  3. 验证我可以用pkg-config --cflags --libs gtk+-3.0
  4. 找到 gtk.h ( /usr/include/gtk-3.0/gtk/gtk.h) 和支持文件
  5. 下载的诱饵示例

以下是问题:

  1. bait 的 Makefile 引用了 gtk+-2.0,您需要将其更改为 3.0
  2. bait 的 Makefile 要求您在特定目录中构建(注意INCLUDEDIRS需要您在 scintilla 目录中
  3. 存档 scintilla.a 需要构建(未提供,bait.o 需要它)
  4. 构建存档需要您修改 makefile(注释掉这些行:

    ifdef GTK3 else GTKVERSION=gtk+-2.0 endif

  5. 一旦你解决了这个问题并建立了档案,就会有大约一百万个未定义的引用:ScintillaGTK.cxx:(.text+0x1374)等等。

反正。我会再给它一点时间,如果你自己关闭这个问题,请告诉我!

于 2012-09-14T19:10:45.770 回答
-1

我已经完成了这个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
于 2014-01-07T00:54:05.547 回答