1

Susegccコンパイラを使用してライブラリ (C プログラミング) をコンパイルし、nmそのライブラリのレポートを生成しています。その nm レポートを以前のバージョンのライブラリと比較して、現在のバージョンのライブラリに存在するシンボルと存在しないシンボルを確認する必要があります。

nm libxxx0.1.a > nm_0.1.txt
nm libxxx0.2.a > nm_0.2.txt

今、私はいくつかのテキスト比較ツールnm_0.1.txtでファイルを比較しています。nm_0.2.txtそのシンボルの違いに加えて、オフセットの違いも得ています。オフセットの違いは気にしません。

簡単な方法で nm レポートのシンボルの違いのみを強調表示するために使用できるコマンド (Windows または Suse) はありますか。

注 : 生成された nm レポートは非​​常に大きくなります。そのテキスト ファイルを手動で開き、何らかのツールを使用してその nm レポートの最初の列を削除することは、その大きな nm ファイルにとって簡単な作業ではありません。

4

1 に答える 1

3

これは Linux 用です。最初に nm 出力を準備してソートする必要があります

nm -g libxxx0.1.a | awk '{print $3}' | sort -u >nm_0.1.txt
nm -g libxxx0.2.a | awk '{print $3}' | sort -u >nm_0.2.txt

すべてのシンボルに関心がある場合は、省略して代わりに-g使用しますcutawk

nm libxxx0.1.a | cut -c20- | sort -u >nm_0.1.txt
nm libxxx0.2.a | cut -c20- | sort -u >nm_0.2.txt

次に、違いを示すことができますdiff

diff -U0 nm_0.1.txt nm_0.2.txt

またcomm

comm -3 nm_0.1.txt nm_0.2.txt
于 2012-12-04T15:29:16.757 に答える