0

ここ数時間、Netbeansで開発したC++アプリケーションのcronジョブを設定しようとしています。私はWindowsマシンでプログラミングしており、ビルドホストとしてUbuntuサーバーを使用しています。ファイルが配布フォルダーに入れられるように設定されており、実行する必要があると思います。次のコマンドラインを使用して実行します。

g++ program

その後、次のエラーが表示されます。

testproject: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.text+0x0):
first defined here
testproject: In function `_fini':
(.fini+0x0): multiple definition of `_fini'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.fini+0x0):
first defined here
testproject:(.rodata+0x0): multiple definition of `_IO_stdin_used'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.rodata.cst4
+0x0): first defined here
testproject: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.data+0x0):
first defined here
testproject: In function `__data_start':
(.data+0x8): multiple definition of `__dso_handle'
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o:(.data+0x0): first defined here
testproject: In function `_init':
(.init+0x0): multiple definition of `_init'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.init+0x0):
first defined here
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o:(.dtors+0x0): multiple definition of
`__DTOR_END__'
testproject:(.dtors+0x8): first defined here
/usr/bin/ld: error in testproject(.eh_frame); no .eh_frame_hdr table will be cre
ated.
collect2: ld returned 1 exit status

ただし、「Netbeansで実行」をクリックすると、問題なく実行されます。これを正しく機能させるには、どのコマンドを実行する必要がありますか?

4

1 に答える 1

1

g++コンパイラです。ソースコードを直接実行できるプログラムに変換します。これは、仮想マシンと呼ばれる別のプログラムで実行される Java とは異なります。

したがって、C++あなたが書いたプログラムの場合、あなたはそうするでしょう

g++ my_source.cpp -o my_program
./my_program

最初の行は、コードを実行可能なプログラムにコンパイルします (このステップは、多くの場合、複数のソース ファイルと、ビルド プロセスを管理する別のプログラム ( make. この手順は 1 回だけ実行する必要があります (プログラムを変更した場合は、もう一度実行します)。IDE (NetBeans など) を使用している場合、この部分はおそらく隠されます。

2 行目は、新しいプログラムを実行します (最初のステップがすべてうまくいったと仮定します)。単に「この./ディレクトリで実行する」ことを意味します (それがないと、システムがオフになり、いくつかの特定の場所でプログラムを探します)。

于 2012-08-20T12:58:27.247 に答える