什么是“ libgnarl”?

时间:2018-06-29 06:29:33

标签: ada gnat

什么是libgnarl?我在各个地方都找到了对此的引用,例如在gcc源中或gprbuild的详细输出中。 gprbuild特别报告了有关确定甚至需要libgnarl的信息,因此它显然是一个可选库,但是实际的库是什么?我找不到任何文档。源包含一堆看起来像它们属于标准库的包,但是不属于(例如Ada.Execution_Time.Timers),因此显然我遗漏了一些东西。

1 个答案:

答案 0 :(得分:5)

您可以在Google上搜索例如“ ada gnarl”并找到一些相当详细的信息。

这是RTS中处理任务的部分,因此,广义上讲,如果您的程序不使用任务,则不需要libgnarl。

从历史上看,它是由纽约大学GNAT团队和佛罗里达州立大学PART团队共同开发的:FSU report in the ACM Digital Library

  

开发GNARL是佛罗里达州立大学POSIX / Ada Real-Time(PART)项目与NYU GNAT开发团队的合作。 PART项目的目标是将Ada语言绑定的开发和标准化推进到IEEE POSIX标准,这是用于操作系统服务的一系列应用程序接口。 PART项目的主要关注点是将Ada任务模型与建议的标准POSIX线程服务(Pthread)进行协调。

来自AdaCore的嵌入式RTS(至少是ARM的)似乎没有保留这种区别:在至少一个中,libgnarl.a仅包含empty.o!但是,AdaCore继续采用了将学术RTS开发并入其嵌入式RTS的方法,请参见s-bb.adsbb => Bare Board):

--        Copyright (C) 1999-2002 Universidad Politecnica de Madrid         --
--             Copyright (C) 2003-2004 The European Space Agency            --
--                     Copyright (C) 2003-2018, AdaCore                     --