GnatBench运行时

时间:2017-01-20 17:15:36

标签: eclipse runtime ada gnat

我正在尝试让Eclipse编译Ada项目。我在Eclipse Neon 2下安装了CDT和GNATBench 2014(似乎是最新的),本机编译器似乎工作正常。但是,当我尝试交叉编译另一个在gpr文件中使用带有语句for Runtime ("Ada") use project;的自定义运行时系统的项目时,Eclipse会抱怨undefined attribute "runtime"。 GPS工具可以很好地编译这个项目。

Eclipse安装缺少什么?我使用最新的Ubutu并安装了必要的库。

编辑:为了澄清,我正在使用gprbuild。 gpr文件如下所示:

project TEST is

  for Target use "leon-elf";
  for Languages use ("Ada", "Asm_Cpp");
  for Object_Dir use "./obj";
  for Main use ("main.adb");
  for Source_Dirs use (".");
  for Runtime ("ada") use project'Project_Dir & "../ada-rts-grm";
  for Exec_Dir use "./obj";

  package Linker is
     for Default_Switches ("ada") use ("-g", "-gdwarf-3", "-gstrict-dwarf", "-Wl,-Map,roic.map");
     for Linker_Options use ();
  end Linker;

  package Ide is
     for Gnat use "leon-elf-gnat";
     for Gnatlist use "leon-elf-gnatls";
     for Debugger_Command use "leon-elf-gdb";
  end Ide;

  package Compiler is
     for Switches ("ada") use ("-gnatwa.V.i.s", "-gdwarf-3", "-O3", "-gnatn", "-funroll-loops", "-gnatp");
  end Compiler;

  package Binder is
  end Binder;

  package Builder is
     for Executable ("main.adb") use "main.elf";
  end Builder;

end TEST;

1 个答案:

答案 0 :(得分:0)

我将这个eclipse插件与Adacore GNAT ARM编译器一起使用,该编译器具有多个运行时。 在带有GNATbench插件的Eclipse内部,在使用它之前将其定义放入项目中,定义所有属性更为安全。

type Runtime_Type is
   ("ada-rts-grm", "any-other-runtime");
Runtime: Runtime_Type := external ("RUNTIME", "ada-rts-grm");

这指示gnatmake和gprbuild使用外部定义的变量RUNTIME,如果未定义,它将使用默认的“ ada-rts-grm”。 如果要从外部定义RUNTIME,请在命令提示符下调用eclipse之前执行此操作:

RUNTIME="any-runtime"; export RUNTIME
<eclipse_path>eclipse

问题是Eclipse内部没有定义找到RTS的路径。因此,您需要将其放入软件包Builder中:

package Builder is
   for Default_Switches ("ada") use ("-g", "--RTS=" & external ("RUNTIME_PATH", "") & "ada-rts-grm");
end Builder

然后您定义

RUNTIME_PATH="runtime_path/"; export RUNTIME_PATH
<eclipse_path>eclipse

package Builder is
   for Default_Switches ("ada") use ("-g", "--RTS=" & project'Project_Dir & "../ada-rts-grm");
end Builder

您可以确认变量已在程序中定义: 窗口->显示视图->方案变量(或其他...->方案变量,如果不存在)。

现在的问题是,来自Adacore的ARM GNAT编译器没有文件“ arm-eabi-gnatmake”,因此,即使gprbuild无法正常工作,该插件也找不到编译器。解决方法是从为ARM体系结构编译的另一个发行版中获得“ gnatmake”。 MuntsOs(http://repo.muntsos.com)具有可用于Linux ARM的编译器工具。将文件“ arm-linux-gnueabihf-gnatmake”重命名为“ arm-eabi-ganatmake”,并将其放在Adacore GNAT ARM编译器路径的“ bin”目录中。

仅此而已。现在,您可以使用gnatmake或gprbuild在Eclipse中使用RTS编译ARM项目。