我正在尝试让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;
答案 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项目。