ワンパス (単一パス) リンカーによるデータの循環依存の防止
現象:ソフトウェアのビルド中にビルド エラーが発生し、変数が正しく解決されません。
ツールチェーンでワンパス (単一パス) リンカーが使用されている場合、ツールチェーン定義ファイルに 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');