【问题标题】:Troubles compiling in GPS (Ada IDE) with glib.h使用 glib.h 在 GPS (Ada IDE) 中编译的问题
【发布时间】:2012-11-20 18:29:10
【问题描述】:

我在尝试在 GPS 中编译 Ada 代码时遇到了一些麻烦。当我将其包含在包裹中时,GPS 显示丢失。我尝试使用 apt-get 安装,它确实如此,但错误仍然存​​在。接下来我能做什么?我在 x64 Ubuntu 12.04 上运行 GPS。

这是我收到的错误消息:

gprbuild -d -P/media/LUISMUNYOZ/QUINTO/str/pendulum/pendulum_portatil/pendulum.gpr -XEXTRA=True -XOPENGL=True -XGNOME=True -XBUILD=生产 print_barrier_sync.adb contrib.gpr:1:09:警告:没有为语言“Xml”指定编译器, 忽略其所有来源 x86_64-pc-linux-gnu-gcc -c lw.c 在包含的文件中 /media/LUISMUNYOZ/QUINTO/str/pendulum/pendulum_portatil/gtkada/testgtk/opengl/lw.c:20:0: /media/LUISMUNYOZ/QUINTO/str/pendulum/pendulum_portatil/gtkada/testgtk/opengl/lw.h:23:18: 致命错误:glib.h:没有此类文件或目录编译终止。 gprbuild:* 编译阶段失败 [2012-11-21 13:24:47] 进程以状态 4 退出(经过时间:02.06 秒)[2012-11-21 13:24:56] 无法在路径上找到可执行文件:svn SVN 错误: […]

此时错误触发:

#ifndef LW_H
#define LW_H

#include <glib.h>           <------------------------------------------
#include <GL/gl.h>

#define LW_MAX_POINTS   200
#define LW_MAX_NAME_LEN 500

文件是lw.h,在包GtkAda中定义。我是从 GPS 页面下载的。

【问题讨论】:

  • 向我们展示您遇到问题的代码以及您收到的错误消息。在您这样做之前,我们无法为您提供帮助。
  • @SimonWright 抱歉,我是通过智能手机发布的。我照你说的做了。谢谢和问候。

标签: ada glib


【解决方案1】:

我会追求@Simon 的approach,但在您解决根本问题时,基于2.4.2. Using the command line 的解决方法可能是一个临时替代方案。

当您使用 linux 时,这里有一个 Makefile 用于基本的 Interaction 演示。

# Make shared, static or debug targets.
OS := $(shell uname)
OBJ = obj
TARGET = interaction
GNATMAKE = gnatmake -D $(OBJ)
CARGS = -cargs -O3 -gnatp -gnatwu -gnatf
BARGS = -bargs
LARGS = -largs
.PHONEY: clean cleaner cleanest

all:
    @echo ""
    @echo "Build targets:"
    @echo ""
    @echo "    shared     Use the shared Ada libraries."
    @echo "    static     Link the Ada libraries statically."
    @echo "    debug      Enable debugging."
    @echo ""
    @echo "Support targets:"
    @echo ""
    @echo "    clean      Remove *.ali *.o b~.*"
    @echo "    cleaner    Remove target, too."
    @echo "    cleanest   Remove build directory, too."
    @echo ""

shared: $(OBJ)
shared: INCLUDE = $(shell gtkada-config --cflags)
shared: BARGS += -shared
shared: LARGS += $(shell gtkada-config --libs)
shared: LARGS += -dead_strip
shared: *.ad[sb]
    @echo "building with shared libraries:"
    $(GNATMAKE) $(TARGET) $(INCLUDE) $(CARGS) $(BARGS) $(LARGS)

static: $(OBJ)
static: INCLUDE = $(shell gtkada-config --static --cflags)
static: BARGS += -static
static: LARGS += $(shell gtkada-config --static --libs)
static: LARGS += -dead_strip
static: *.ad[sb]
    $(GNATMAKE) $(TARGET) $(INCLUDE) $(CARGS) $(BARGS) $(LARGS)

debug: $(OBJ)
debug: INCLUDE = $(shell gtkada-config --static --cflags)
debug: BARGS += -static
debug: LARGS += $(shell gtkada-config --static --libs)
debug: *.ad[sb]
    $(GNATMAKE) -g $(TARGET) $(INCLUDE) $(LARGS)

$(OBJ):
    mkdir $(OBJ)

clean:
    ${RM} $(OBJ)/* b~*

cleaner: clean
    ${RM} $(TARGET)

cleanest: cleaner
    ${RM} -r $(OBJ) 

作为参考,这些软件包安装在 Ubuntu 12.04 上:

$ dpkg --get-selections | egrep "gnat|gtkada" 安装 gnat-4.6 安装 gnat-4.6-base 安装 gnat-gps 安装 gnat-gps-common 安装 gnat-gps-doc 安装 libgnat-4.6 安装 libgnatprj4.6 安装 libgnatvsn4.6 安装 libgtkada-bin 安装 libgtkada2.24.1 安装 libgtkada2.24.1-dev 安装

【讨论】:

    【解决方案2】:

    我从未使用过 GtkAda。但是...我在 Google 上搜索了 glib.h 并获得了很多点击,建议对于纯 C 构建应该使用 - 例如,来自 this StackOverflow question -

    # Sample Makefile
    CFLAGS := $(shell pkg-config --cflags glib-2.0 gtk+-2.0)
    LDFLAGS := $(shell pkg-config --libs glib-2.0 gtk+-2.0)
    
    foo: foo.c
            $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
    

    但是,我们在这里谈论的是gprbuild,所以也许GtkAda documentation 是相关的?它说您需要在您的 GNAT 项目文件中包含 with "gtkada";,并在您的 ADA_PROJECT_PATH 中包含 gtkada.gpr 的位置(如果它不存在)(请参阅 gnatls -v 的输出)。

    如果您已经这样做了,请向我们展示 GPR 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多