2012-02-10 7 views
2

GCCコンパイラエラーが発生します。コマンドgcc -o -std=c99 print print.cしてコンパイルは、私が「print.c」と呼ばれる非常に簡単な印刷プログラムを持っている

は私を与える:

print: In function `_fini': 
(.fini+0x0): multiple definition of `_fini' 
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crti.o:(.fini+0x0): first defined here 
print: In function `__data_start': 
(.data+0x0): multiple definition of `__data_start' 
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o:(.data+0x0): first defined here 
print: In function `__data_start': 
(.data+0x4): multiple definition of `__dso_handle' 
/usr/lib/gcc/i686-linux-gnu/4.6.1/crtbegin.o:(.data+0x0): first defined here 
print:(.rodata+0x4): multiple definition of `_IO_stdin_used' 
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o:(.rodata.cst4+0x0): first defined here 
print: In function `_start': 
(.text+0x0): multiple definition of `_start' 
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o:(.text+0x0): first defined here 
print:(.rodata+0x0): multiple definition of `_fp_hw' 
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o:(.rodata+0x0): first defined here 
print: In function `_init': 
(.init+0x0): multiple definition of `_init' 
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crti.o:(.init+0x0): first defined here 
/tmp/ccfvqWMW.o: In function `main': 
print.c:(.text+0x0): multiple definition of `main' 
print:(.text+0xb4): first defined here 
/usr/lib/gcc/i686-linux-gnu/4.6.1/crtend.o:(.dtors+0x0): multiple definition of `__DTOR_END__' 
print:(.dtors+0x4): first defined here 
/usr/bin/ld: error in print(.eh_frame); no .eh_frame_hdr table will be created. 
collect2: ld returned 1 exit status 

誰もがこの問題を解決する方法を知っていますか?

答えて

10

あなたprint最初のコンパイルからあなたprint実行可能ファイルを再リンクしようとしているので、-oオプションの引数として解釈されていません。これには、リンクしようとしている他のシンボル、つまりエラーを複製する多数のシンボルが含まれます。

ではなく、試してみてください。

まだ
gcc -std=c99 -o print print.c 

以上を:

gcc -std=c99 -Wall -g -O -o print print.c 
+0

s/is/is /あなたはいいです。 –

+0

@RichardPennington:OP *は 'print 'が' -o'(出力ファイル名)の引数として解釈されることを望んでいますが、そうではありませんので、代わりに入力ファイルとして解釈されます。 – caf

+0

@cat私の間違い。 –

4

コマンドはgcc -o print -std=c99 print.cである必要があります。-oパラメーターは、次のトークンが出力ファイルであることを指定します。

+0

うん、それを固定しています。申し訳ありませんが、私はかなりCの新しいです – Strogenstroff

1

このコマンドを使用して行: