ワンパス (単一パス) リンカーによるデータの循環依存の防止
現象:ソフトウェアのビルド中にビルド エラーが発生し、変数が正しく解決されません。
ツールチェーンでワンパス (単一パス) リンカーが使用されている場合、ツールチェーン定義ファイルに StartLibraryGroup と EndLibraryGroup のリンカー命令を追加することによってデータの循環依存を防ぎます。ビルド プロセスにより、グループ化命令がモデル参照ライブラリ $(MODELREF_LIBS) およびユーザー ライブラリ $(LIBS) に適用されます。
たとえば、GNU gcc のようなリンカーの場合、次に示すように命令は '-Wl,--start-group' と '-Wl,--end-group' になります。
% ------------------------------
% Linker
% ------------------------------
tool = tc.getBuildTool('Linker');
tool.setName( 'GNU Linker');
tool.setCommand( 'gcc');
tool.setPath( '');
tool.setDirective( 'Library', '-l');
tool.setDirective( 'LibrarySearchPath', '-L');
tool.setDirective( 'OutputFlag', '-o');
tool.setDirective( 'Debug', '-g');
tool.addDirective( 'StartLibraryGroup', '-Wl,--start-group');
tool.addDirective( 'EndLibraryGroup', '-Wl,--end-group');
tool.setFileExtension( 'Executable', '');
tool.setFileExtension( 'Shared Library', '.so');