用于嵌入式裸机系统的 flex/bison

问题描述 投票:0回答:1

我为 Cortex M 开发软件,为此我使用 Arm GNU 工具链。
我需要解析我有语法的数据包。

不过我对

flex
有问题,因为它通常需要我没有为皮质 M 编译的
libfl.a
库。

我怎样才能解决这个问题(除了只为 cortex M 重新编译

libfl.a
)?也许一些弹性参数?

此外,这引起了我的其他疑虑,因为我的系统是裸机:

  • 我没有标准的 I/O 函数,我有一个自定义函数,我称之为
    qprintf()
    .
  • 我没有动态内存管理。我可以使用 FreeRTOS,因此,
    pvPortMalloc()
    而不是标准的
    malloc()
    .

所以我想知道,即使克服了

libfl.a
问题,flex和bison是否会出现上述约束的问题。

bison flex-lexer cortex-m bare-metal
1个回答
0
投票

libfl.a 只定义了

main
yywrap
。因此,如果您不需要其中任何一个(因为您拥有自己的
main
并且您可以使用
%option noyywrap
或者您拥有自己的
yywrap
),则不需要libfl.a

但是,由 flex 生成的扫描仪确实需要 C 库中的

malloc
/
realloc
,因此如果您没有,则需要提供替代品。默认的
YY_INPUT
/
ECHO
宏也使用 stdio,所以如果你想避免标准库的那部分,你需要重新定义(或不使用)它们。

© www.soinside.com 2019 - 2024. All rights reserved.