【问题标题】:How to compile flex code in order to obtain a dynamic library?如何编译 flex 代码以获得动态库?
【发布时间】:2013-12-05 16:50:54
【问题描述】:

我想编译我的 flex scanner.l 以便从我的 C/C++ 项目中调用动态库。正确的做法是什么?我能否在不同的线程中同时从我的 C/C++ 程序调用扫描仪?

【问题讨论】:

  • 使用编译器创建任何其他动态库的方式相同。你用的是哪个编译器?
  • 我使用 gcc。使用 flexscanner.l 我生成了 lex.yy.c,那么如何从另一个程序调用扫描仪?
  • 让您的其他程序调用 lex.yy.c 中定义的方法。当你去编译时,告诉 gcc 编译你的主程序和 lex.yy.c。让它成为一个动态库似乎有点矫枉过正。
  • 我想要一个.so,因为我想学习如何去做。过去我已经尝试过您描述的方法,并且有很多限制。我记得一个:lex.yy.c 方法使用许多全局变量,这使得扫描程序无法在不同的线程上运行。拥有一个动态库可能是解决多线程问题的一个步骤。
  • Flex 可以生成可重入解析器(对多线程应用程序安全):flex.sourceforge.net/manual/Reentrant.html

标签: c++ c flex-lexer


【解决方案1】:

(问题已在 cmets 中回答。见Question with no answers, but issue solved in the comments (or extended in chat)

@Josh 写道:

与使用编译器创建任何其他动态库的方式相同。

让您的其他程序调用 lex.yy.c 中定义的方法。当你去编译时,告诉 gcc 编译你的主程序和 lex.yy.c。让它成为一个动态库似乎有点矫枉过正。

Flex 可以生成可重入解析器(对多线程应用程序安全):
Flex manual

如果您只是想学习如何使用 gcc 创建共享库,那么快速的 google 搜索应该会得到很多好的结果。如果您遇到特定问题,您可以从那里得到进一步的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 2015-09-19
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多