什么是libgnarl
?我在各个地方都找到了对此的引用,例如在gcc源中或gprbuild的详细输出中。 gprbuild特别报告了有关确定甚至需要libgnarl
的信息,因此它显然是一个可选库,但是实际的库是什么?我找不到任何文档。源包含一堆看起来像它们属于标准库的包,但是不属于(例如Ada.Execution_Time.Timers
),因此显然我遗漏了一些东西。
答案 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.ads
(bb
=> Bare Board):
-- Copyright (C) 1999-2002 Universidad Politecnica de Madrid --
-- Copyright (C) 2003-2004 The European Space Agency --
-- Copyright (C) 2003-2018, AdaCore --