flexによって生成されたソースコードから構築された共有ライブラリがDEBパッケージに含まれている場合、/usr/bin/lintianは次のように報告します。
フレックス生成関数 yy_fatal_error での exit() 呼び出しのため:
static void yy_fatal_error (yyconst char* msg )
{
(void) fprintf( stderr, "%s\n", msg );
exit( YY_EXIT_FAILURE );
}
lintian が shlib-calls-exit の報告を停止するように DEB パッケージを変更するにはどうすればよいですか?
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
- lintian 2.5.10
- Linux ディストリビューション: Debian Unstable (sid)
約 1 週間前、同様の質問を debian-mentors メーリング リストに投稿しました。
flex で生成されたソース コードに exit() 呼び出しがあるという問題は、flex-help メーリング リストで取り上げられましたが、その投稿には回答がありませんでした。