如果一个DEB包包含一个由flex生成的源代码构建的共享库,/usr/bin/lintian会报告
由于 flex 生成的函数 yy_fatal_error 中的 exit() 调用:
static void yy_fatal_error (yyconst char* msg )
{
(void) fprintf( stderr, "%s\n", msg );
exit( YY_EXIT_FAILURE );
}
如何修改 DEB 包,让 lintian 停止报告 shlib-calls-exit?
DEB 包在其构建脚本中使用了CMake 。对应的 CMake 源代码片段是
flex_target(scanner lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.c)
bison_target(parser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.c)
add_flex_bison_dependency(scanner parser)
add_library(parse-and-scan SHARED ${FLEX_scanner_OUTPUTS} ${BISON_parser_OUTPUT_SOURCE})
软件版本信息:
- 弹性 2.5.35
- cmake 2.8.9
- 临田 2.5.10
- Linux 发行版:Debian Unstable (sid)
大约一周前,我在 debian-mentors 邮件列表中发布了一个类似的问题
在 flex 生成的源代码中调用 exit() 的问题已在 flex-help 邮件列表中提出,但该帖子没有给出任何答案。