标签: gnat

Ada - GNAT GPS IDE无法绑定和链接

我正在尝试从Wikibooks学习Ada.我已经下载并安装了GNAT GPL 2011,在GPS IDE中创建了一个项目,并附带了一个示例hello world程序.

我遇到的问题是GPS IDE没有绑定和链接我的程序.从这里我发现了,gnatbind并且gnatlink必须在之后运行gcc.如果我从命令行手动执行此操作,则构建成功并正确生成可执行文件.但如果我点击GPS中的"全部构建",我得到的就是

gnatmake -d -PD:\path\to\project.gpr
gcc -c -I- -gnatA D:\path\to\hello.adb

[2011-06-23 13:05:17] process terminated successfully (elapsed time: 00.35s)
Run Code Online (Sandbox Code Playgroud)

并且仅生成*.o和*.ali文件.

如何制作GPS绑定并链接我的应用程序?

linker binding ada gnat

2
推荐指数
1
解决办法
1239
查看次数

如何绑定到OpenCV for GNAT?

谁能告诉我如何为GNAT 找到或创建OpenCV的绑定?我想用Ada2005用OpenCV(1.0或2.X)实现一些程序,但我不知道怎么做.任何人都可以教我怎么做吗?

binding opencv ada gnat

2
推荐指数
1
解决办法
738
查看次数

艾达:包不允许身体

使用GNAT编译器,当我尝试编译或检查以下文件的语义时,我得到一些错误的变体package "Foo" does not allow a body.我是这门语言的新手,无法在互联网上的任何地方找到这个看似基本问题的答案.请指教.

foo.ads

package Foo is
   type Shape_Enum is (Circle, Triangle, Rectangle);
end Foo;
Run Code Online (Sandbox Code Playgroud)

foo.adb

package body Foo is
   procedure Foo is
      MyShape : Shape_Enum;
   begin
      MyShape := Rectangle;
   end Foo;   
end Foo;
Run Code Online (Sandbox Code Playgroud)

ada gnat

2
推荐指数
1
解决办法
5014
查看次数

c宏__LINE __,__ FILE __,__ func__等价于gnat ada

是否有一个等效蚊蚋 ADAC宏 __LINE____FILE____func__?这些对于错误消息非常有用,可以快速找到代码中的错误。也许还有另一个概念可以归档相同的目标。

c macros ada gnat

2
推荐指数
1
解决办法
640
查看次数

是什么导致了这个 Ada 编译错误“歧义字符文字”?

我有这个 Ada 代码。

with Ada.Text_IO; 
use Ada.Text_IO;

procedure for_Loop is
begin
    for Counter in 'A'..'Z' loop
        Put(Counter);   
    end loop;
    New_Line;
end for_Loop;
Run Code Online (Sandbox Code Playgroud)

Ada 编译器 (gnatmake) 输出这些错误消息。

gcc -c for_loop.adb
for_loop.adb:6:24: ambiguous character literal
for_loop.adb:6:24: possible interpretation: Character
for_loop.adb:6:24: possible interpretation: Wide_Character
for_loop.adb:6:24: possible interpretation: Wide_Wide_Character
gnatmake: "for_loop.adb" compilation error
Run Code Online (Sandbox Code Playgroud)

代码有什么问题?

ada gnat

2
推荐指数
1
解决办法
574
查看次数

用于Stm32F103 Arm,GNAT Ada编译器的运行时系统

我想将Ada与Stm32F103 uc一起使用,但这是问题所在-GNAT 2016中没有内置的运行时系统。TI RTS还包含另一个cortex-m3 uc-zfp-lm3s,但似乎它需要一些全局性更新,无法简单更改内存大小/来源。

因此,存在一些问题:

  1. 某些机身是否为stm32f103提供RTS?

  2. 是否有关于cortex-m3或其他arm uc的低级人员的好书?

PS。当我尝试通过GPS运行程序时,使用zfp-lm3s会引发此错误:

Loading section .text, size 0x140 lma 0x0 Load failed

runtime ada stm32 gnat

2
推荐指数
1
解决办法
571
查看次数

SPARK 中的任务需要按顺序进行细化

我目前正在大学实时编程语言课程中学习 Ada,并且有一个关于 SPARK 的问题。

我正在开发一个项目,其任务是监视离网电源。这项任务对于机器安全至关重要,因此应该尽可能没有错误,经过 SPARK 验证。

我收到这个奇怪的错误,我无法找到修复方法11:14 tasking in SPARK requires sequential elaboration (SPARK RM 9(2)) violation of pragma SPARK_Mode

原始代码有点长,但我能够通过一个最小的示例得到相同的错误。

规格:

pragma Profile (Ravenscar);
pragma SPARK_Mode;

with System;

package simple_monitoring is

   function sign (val : in Float) return Float
     with Pre => val >= 10.0;

   task type myTask is
   end myTask;

end simple_monitoring;
Run Code Online (Sandbox Code Playgroud)

实施:

pragma Profile (Ravenscar);
pragma SPARK_Mode;

with Ada.Real_Time; use Ada.Real_Time;
with Ada.Text_IO; use Ada.Text_IO;

package body simple_monitoring is

   function sign (val : in Float) …
Run Code Online (Sandbox Code Playgroud)

ada gnat spark-ada

2
推荐指数
1
解决办法
287
查看次数

阿达的阐述根本没有发生

我有一个不寻常的情况,根本没有执行精简代码.这不是详细说明问题,而是所有问题的详细阐述.

问题在于我没有"讨论"有关的单位,但理论上它仍然应该是可访问的,只要它的详细说明发生.

当然,我可以为相关单元添加一个无用的"with",但在我的实际用例中,我必须使用大量单元.

我的问题是,如果在代码中,通过编译指示,在gpr项目文件中,或通过命令行开关,我可以强制编译器包含文件,即使它认为文件未被引用?

这是一个最小的工作示例:

as.ads:

package As is
    type A is tagged null record;
    type Nothing is null record;
    function Create (Ignored : not null access Nothing) return A;
    function Image (From : A) return String;
end As;
Run Code Online (Sandbox Code Playgroud)

as.adb:

package body As is
    function Create (Ignored : not null access Nothing) return A is
        (null record);
    function Image (From : A) return String is ("A");
end As;
Run Code Online (Sandbox Code Playgroud)

finder.ads:

with Ada.Tags;

package Finder is
    procedure Register (Name : String; Tag …
Run Code Online (Sandbox Code Playgroud)

ada gnat

2
推荐指数
1
解决办法
138
查看次数

如何使用 .gpr 项目文件和 gprbuild 进行交叉编译?

我正在尝试从 Linux ( Fedora 29 )交叉编译一个以 Windows 为目标的 Ada 程序。我对编译一无所知,Gnat 项目经理文档无法帮助我这个菜鸟。我更喜欢在项目文件中使用开关,并使命令尽可能简单。我该怎么办?

我试过gprbuild -P logfilter.gpr --target=Windows导致

Error: no compiler found for language 'c', target = Windows, default runtime
Error: no compiler found for language 'ada', target = Windows, default runtime
logfilter.gpr:3:09: warning: no compiler specified for language "Ada", ignoring all its sources
logfilter.gpr:7:19: "log_filter_main.adb" is not a source of project "logfilter"
gprbuild: problems with main sources

Run Code Online (Sandbox Code Playgroud)

这是我的gprconfig

prconfig has found the following compilers on your …
Run Code Online (Sandbox Code Playgroud)

compilation ada cross-compiling gnat gprbuild

2
推荐指数
1
解决办法
1204
查看次数

为什么我的循环不变量可能不会被任何迭代保留?

我正在尝试在 Spark 中编写代码,使用 Horner 方法计算多项式的值。变量Result由Horner计算,变量Z以经典方式计算。我做了很多不同的测试,我的循环不变式总是正确的。但是,我收到消息:

loop invariant might not be preserved by an arbitrary iteration
Run Code Online (Sandbox Code Playgroud)

是否存在循环不变量不起作用的情况,或者您是否需要向不变量添加更多条件?

这是我的主函数,它调用我的 Horner 函数:

  with Ada.Integer_Text_IO;
  use Ada.Integer_Text_IO;

  with Poly;
  use Poly;

  procedure Main is
     X : Integer;
     A : Vector (0 .. 2);
  begin
     X := 2;
     A := (5, 10, 15);

     Put(Horner(X, A));
  end Main;
Run Code Online (Sandbox Code Playgroud)

和霍纳函数:

package body Poly with SPARK_Mode is
function Horner (X : Integer; A : Vector) 
  return Integer 
  is

  Result : Integer := 0;
  Z …
Run Code Online (Sandbox Code Playgroud)

ada gnat loop-invariant

2
推荐指数
1
解决办法
93
查看次数