Linux で共有ライブラリをコンパイルするために、 native-maven-pluginを使用しています。コンパイラ オプションを渡して-g
、デバッグ シンボルの生成を有効にします。以下は POM からの抜粋です。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<workingDirectory></workingDirectory>
<compilerStartOptions>
<compilerStartOption>-g</compilerStartOption>
</compilerStartOptions>
<linkerStartOptions>
<linkerStartOption>-shared</linkerStartOption>
<linkerStartOption>-g</linkerStartOption>
</linkerStartOptions>
<sources>
...
</sources>
</configuration>
</plugin>
native-maven-pluginは、 gccを呼び出すときに常にソース ファイルへの絶対パスを使用します。これにより、デバッグ シンボルでも絶対パスが生成されます。nm -l libfoo.so
デバッグ シンボルをリストした出力は次のようになります。
0000797a T GetTickCount /home/myusername/projects/blabla/foo.c:3005
ご覧のとおり、ソース ファイル パスは絶対パスであり、ユーザー名とプロジェクト構造が含まれています。私はそれをしたくありません。デバッグ シンボルを相対パス名に変更するにはどうすればよいですか?