Windows で MinGW コンパイラをセットアップしています。いくつかのサードパーティの*.a
ファイルがLinuxマシンから直接コピーされるプロジェクトのセットアップがあります。
単純な C プログラムをコンパイルしようとしましたが、ファイルのシンボル テーブルを調べると*.o
、すべてのシンボル名の先頭にアンダースコアが付いています。
プログラム例:
int main(int argc, char** argv)
{
int xyz=0;
printf("I am Here\n");
}
シンボル テーブル エントリ:
セクション: Idx 名前 サイズ VMA LMA ファイル オフ Algn 0 .テキスト 00000040 00000000 00000000 0000008c 2**2 CONTENTS、ALLOC、LOAD、RELOC、READONLY、CODE 1 .データ 00000000 00000000 00000000 00000000 2**2 割り当て、ロード、データ 2 .bss 00000000 00000000 00000000 00000000 2**2 割り当て 記号表: [ 0](秒 -2)(fl 0x00)(ty 0)(scl 103) (nx 1) 0x00000000 abcd01.c ファイル [ 2](秒 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000b **_main** [ 3](秒 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x3e nreloc 4 nlnno 0 [ 5](秒 2)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .data AUX scnlen 0x0 nreloc 0 nlnno 0 [ 7](秒 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss AUX scnlen 0x0 nreloc 0 nlnno 0 [ 9](秒 0)(fl 0x00)(ty 20)(scl 2) (nx 1) 0x00000000 ___main AUX tagndx 0 ttlsiz 0x0 lnnos 0 次の 0 [ 11](秒 0)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __alloca [ 12](秒 0)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 **_printf** [.text] の移転記録: オフセット タイプ 値 00000020 DISP32 __アロカ 00000025 DISP32 ___メイン 00000033 dir32 .text 00000038 DISP32 **_printf**
ここでは、ベース C 関数でさえ、先頭にアンダースコアが追加されています。
を使ってみ-fno-leading-underscore
ましたが、使い物になりません。
MingW バージョン:
$ gcc -v C:/PROGRA~1/GNUCFO~1//ncbin/../lib/gcc-lib/i386-pc-mks/3.3.1/ から仕様を読み取る スペック 以下で構成: configure --prefix=/usr/gnu i386-pc-mks --enable-languages=c,c+ + --disable-nls --disable-shared --enable-sjlj-exceptions --enable-threads --dis できる-win32-レジストリ スレッドモデル: win32 gcc バージョン 3.3.1 (mingw スペシャル 20030804-1)