5

従来のライブラリの実装と、関連する公開されたヘッダー ファイルがあります。最近、公開されたヘッダー ファイルの一部の関数が、ライブラリの実装に対応する定義を持っていないことがわかりました。

そのような機能が他にもあるかどうかを確認したいと思います。ヘッダーに存在するすべての API をふるいにかけ、その定義があるかどうかを確認するよりも、これを行う簡単な方法はありますか?

4

4 に答える 4

1

abi-compliance-checkerツールでABIダンプファイルを作成してみてください。

abi-compliance-checker -lib NAME -dump DESC.xml

DESC.xmlファイルは次のとおりです。

<version>
    1.0
</version>

<headers>
    /path(s)/to/headers
</headers>

<libs>
    /path(s)/to/libraries
</libs>

SymbolInfo結果のABIダンプファイルには、ヘッダーファイルで宣言されたシンボル()および共有ライブラリによってエクスポートされたシンボル()について必要な情報が含まれますSymbols

オプションを追加することにより、xml形式でABIダンプを生成することもでき--xmlます。

于 2013-01-28T07:23:42.907 に答える
1

すべての関数を呼び出してコンパイルを試みるヘッダーから C ソースを生成できます (Perl が最適です!)。リンカは、不足している関数について文句を言います。

于 2013-01-25T04:28:31.307 に答える
0

私はctags、ヘッダー ファイルから識別子のリストを生成するために使用する傾向があります。次にaremfarまたはelfdumpUnix またはlib.exeWindows dumpbin.exe(ここでの説明を参照) を使用して、ライブラリから識別子のリストをダンプしdiff、2 つのリストを並べ替えます。

于 2013-01-25T04:54:08.677 に答える
0

これが C の場合、次のようなことができます。

printf("", /* insert all functions here */);

への関数ポインタとしてそれらすべてを渡す必要がありますprintf。存在しないものは、リンカー エラーとして表示されるはずです。

(C++ では、オーバーロードを明示的にリストする必要があるため、少し難しくなります。)

于 2013-01-25T04:43:56.013 に答える