闪烁 - 无法编译诱饵示例

Posted

技术标签:

【中文标题】闪烁 - 无法编译诱饵示例【英文标题】: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 命令是否正常工作,因为我无法让它返回任何东西。 那个错误现在消失了......我已经得到它来制作一个目标文件,但是现在有很多未定义的参考问题......很多很多。如果有帮助,我会发布它们。 【参考方案1】:

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

这就是我所做的:

    在我的虚拟盒子上安装 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 需要您在 scintilla 目录中 需要构建存档 scintilla.a(未提供,但 bait.o 需要它)

    构建存档需要您修改 makefile(注释掉这些行:

    ifdef GTK3 else GTKVERSION=gtk+-2.0 endif

    一旦你修复了这个问题并构建了档案,就会有大约一百万个未定义的引用在: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

【讨论】:

以上是关于闪烁 - 无法编译诱饵示例的主要内容,如果未能解决你的问题,请参考以下文章

解决eclipse Building workspace(Sleeping)闪烁

Arduino ESP8266利用定时器中断控制LED闪烁示例程序二

Arduino ESP8266利用定时器中断控制LED闪烁示例程序

无法修复 React 暗模式闪烁

我的 C# 表单闪烁,我无法修复它。我已经尝试了一切

XCUITest 元素快照无法闪烁光标