尝试运行Netbeans中编译的c ++程序时出错

时间:2012-08-20 12:35:35

标签: c++ netbeans

在过去的几个小时里,我一直试图为我在Netbeans中开发的C ++应用程序设置一个cronjob。我在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中运行时,它运行得很好。我需要运行哪个命令才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

g++compiler。它将您的源代码转换为可以直接运行的程序。这与Java不同,Java在一个名为virtual machine的单独程序上运行。

因此,对于您编写的C++程序,您可以执行

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

第一行将您的代码编译为可运行的程序(此步骤通常更复杂,包含多个源文件,以及用于管理构建过程的单独程序,例如make)。您只需执行此步骤一次(如果您更改了程序,则再次执行此操作)。如果您使用IDE(例如NetBeans),则可能会隐藏此部分。

第二行运行新程序(假设第一步一切顺利)。 ./只是意味着“在此目录中运行它”(如果没有它,您的系统将会在几个特定位置查找该程序)。