什么是libgnarl?我在各个地方找到了对它的引用,比如gcc源代码或gprbuild的详细输出.gprbuild专门报告决定是否libgnarl有必要,所以它显然是一个可选的库,但实际的库是什么?我找不到任何文件.这些源包含一堆看起来像属于标准库的包,但不是(喜欢Ada.Execution_Time.Timers),所以显然我缺少一些东西.
你可以google例如"ada gnarl"并找到一些相当详细的信息.
它是处理任务的RTS的一部分,因此,广泛地说,如果你的程序不使用任务,它将不需要libgnarl.
从历史上看,它是作为纽约大学GNAT团队和佛罗里达州立大学PART团队的联合项目开发的:来自ACU数字图书馆的FSU报告,
开发GNARL是佛罗里达州立大学POSIX/Ada Real-Time(PART)项目与纽约大学GNAT开发团队的合作项目.PART项目的目标是将Ada语言绑定的开发和标准化推进到IEEE POSIX标准,这是一系列用于操作系统服务的应用程序接口.PART项目的一个主要关注点是Ada任务模型与提议的标准POSIX线程服务(Pthreads)的协调.
来自AdaCore的嵌入式RTS(至少是ARM的RTS)似乎没有保留这种区别:至少libgnarl.a只有一个,只包含empty.o!但是,AdaCore继续将学术RTS开发纳入其嵌入式RTS的方法,请参阅s-bb.ads(bb=>裸板):
-- Copyright (C) 1999-2002 Universidad Politecnica de Madrid --
-- Copyright (C) 2003-2004 The European Space Agency --
-- Copyright (C) 2003-2018, AdaCore --
Run Code Online (Sandbox Code Playgroud)