【问题标题】:Scintilla- Can't compile bait example闪烁 - 无法编译诱饵示例
【发布时间】:2012-09-14 18:13:13
【问题描述】:

我正在尝试从 Scintilla 网站编译 bait example。我有零运气让它编译。我可以很好地编译 scintilla 本身,以及 scite 但诱饵是另一回事。当我尝试使用提供的 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

【问题讨论】:

  • gtk.h 在您的系统中的位置? (即find . -name "gtk.h"的结果)
  • 什么都不返回...这很奇怪。
  • 这意味着您缺少正确的头文件。你确定你正确安装了这个库吗?
  • 我知道我有 GTK。我可以编译 GTK 程序。我不知道这里有什么变化。另外,我不知道 find 命令是否正常工作,因为我无法让它返回任何东西。
  • 那个错误现在消失了......我已经得到它来制作一个目标文件,但是现在有很多未定义的参考问题......很多很多。如果有帮助,我会发布它们。

标签: c scintilla


【解决方案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) 等..

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

【讨论】:

  • 我认为这可能行得通,但我已经尝试过了,而且我的结果完全相同,恐怕。无论如何,我很欣赏这种尝试。这是一个令人困惑的问题。 ://
【解决方案2】:

我已经完成了这个 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多