2
我在Windows中有一個MinGW編譯器設置。並在項目設置中從Linux機器直接複製某些第三方*.a
文件。生成的符號名稱有額外的前導下劃線
嘗試編譯一個簡單的C程序,當我查看*.o
文件的符號表時,它對所有符號名稱都有前導下劃線。
實施例的程序:
int main(int argc, char** argv)
{
int xyz=0;
printf("I am Here\n");
}
符號表條目:
Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000040 00000000 00000000 0000008c 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 1 .data 00000000 00000000 00000000 00000000 2**2 ALLOC, LOAD, DATA 2 .bss 00000000 00000000 00000000 00000000 2**2 ALLOC SYMBOL TABLE: [ 0](sec -2)(fl 0x00)(ty 0)(scl 103) (nx 1) 0x00000000 abcd01.c File [ 2](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000b **_main** [ 3](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x3e nreloc 4 nlnno 0 [ 5](sec 2)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .data AUX scnlen 0x0 nreloc 0 nlnno 0 [ 7](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss AUX scnlen 0x0 nreloc 0 nlnno 0 [ 9](sec 0)(fl 0x00)(ty 20)(scl 2) (nx 1) 0x00000000 ___main AUX tagndx 0 ttlsiz 0x0 lnnos 0 next 0 [ 11](sec 0)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __alloca [ 12](sec 0)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 **_printf** RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE 00000020 DISP32 __alloca 00000025 DISP32 ___main 00000033 dir32 .text 00000038 DISP32 **_printf**
這裏甚至鹼基C功能與下劃線前綴。
嘗試使用-fno-leading-underscore
,但沒有用。
MingW平臺版本:
$ gcc -v Reading specs from C:/PROGRA~1/GNUCFO~1//ncbin/../lib/gcc-lib/i386-pc-mks/3.3.1/ specs Configured with: configure --prefix=/usr/gnu i386-pc-mks --enable-languages=c,c+ + --disable-nls --disable-shared --enable-sjlj-exceptions --enable-threads --dis able-win32-registry Thread model: win32 gcc version 3.3.1 (mingw special 20030804-1)
你有問題嗎? – 2013-04-29 07:43:06