闪烁 - 无法编译诱饵示例
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闪烁示例程序二