ネームマングリング - CI/CD用語集の定義
ネームマングリングは、オーバーロードされた関数が一意にリンクされるように、型や namespace の情報をシンボル名にエンコードします。
ネームマングリング は、コンパイラが関数のシグネチャ (namespace、引数の型) を、出力するシンボル名にエンコードする方法です。これにより、オーバーロードされた関数が一意な linker シンボルを得ます。C++ は mangle しますが、C は mangle しません。
ネームマングリングは、コンパイラが関数のシグネチャ (namespace、引数の型) を、出力するシンボル名にエンコードする方法です。これにより、オーバーロードされた関数が一意な linker シンボルを得ます。C++ は mangle しますが、C は mangle しません。
CI において
C と C++ を混在させるときによくあるリンクエラーは、一致しない mangle 済み名によって引き起こされる undefined reference です。C の宣言を extern "C" で囲むと mangling が無効になりリンクが修正されます。コンパイルは通ったのに CI のリンクステップが失敗する場合に確認する価値があります。
関連ガイド
Symbol Table - CI/CD Glossary DefinitionSymbol Table: A symbol table is a data structure in an object file or executable that maps names (functions,…
Undefined Reference - CI/CD Glossary DefinitionUndefined Reference: An undefined reference is a linker error meaning a symbol (function or variable) was dec…
Linker - CI/CD Glossary DefinitionLinker: A linker combines one or more compiled object files, plus referenced libraries, into a single executa…
ABI (Application Binary Interface) - CI/CD Glossary DefinitionABI (Application Binary Interface): An ABI is the low-level contract between compiled binaries: how functions…