我是学习C的新手,我在Windows上(我想在Windows上学习)。
我在cygwin上安装了GCC,并且使用NetBeansIDE。
来源:
#include <stdio.h>
main()
{
printf("Hello, world!n");
return 0;
}
在构建上述代码时,我得到了错误:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/cygdrive/g/VS Projects/Hello World'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin_4.x-Windows/hello_world.exe
make[2]: Entering directory `/cygdrive/g/VS Projects/Hello World'
mkdir -p build/Debug/Cygwin_4.x-Windows
rm -f build/Debug/Cygwin_4.x-Windows/helloworld.o.d
gcc -c -g -MMD -MP -MF build/Debug/Cygwin_4.x-Windows/helloworld.o.d -o build/Debug/Cygwin_4.x-Windows/helloworld.o helloworld.c
mkdir -p dist/Debug/Cygwin_4.x-Windows
gcc -o dist/Debug/Cygwin_4.x-Windows/hello_world build/Debug/Cygwin_4.x-Windows/helloworld.o build/Debug/Cygwin_4.x-Windows/main.o
build/Debug/Cygwin_4.x-Windows/main.o: In function `main':
/cygdrive/g/VS Projects/Hello World/main.c:14: multiple definition of `main'
build/Debug/Cygwin_4.x-Windows/helloworld.o:/cygdrive/g/VS Projects/Hello World/helloworld.c:4: first defined here
collect2: error: ld returned 1 exit status
nbproject/Makefile-Debug.mk:63: recipe for target `dist/Debug/Cygwin_4.x-Windows/hello_world.exe' failed
make[2]: *** [dist/Debug/Cygwin_4.x-Windows/hello_world.exe] Error 1
make[2]: Leaving directory `/cygdrive/g/VS Projects/Hello World'
nbproject/Makefile-Debug.mk:60: recipe for target `.build-conf' failed
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/cygdrive/g/VS Projects/Hello World'
nbproject/Makefile-impl.mk:39: recipe for target `.build-impl' failed
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 562ms)
在Windows上学习C有什么简单的方法吗(visualstudio给了我错误,似乎主要针对c++,所以这不是一个选项)
问题可能出在gcc
或NetBeans配置上
在这里运行良好
// helloworld.c
#include <stdio.h>
main()
{
printf("Hello, world!n");
return 0;
}
编译为myprog
$ gcc helloworld.c -o myprog
运行
$ ./myprog
# => Hello, world!
看看NetBeans是如何设置的。失败的编译是:
gcc -o dist/Debug/Cygwin_4.x-Windows/hello_world
build/Debug/Cygwin_4.x-Windows/helloworld.o
build/Debug/Cygwin_4.x-Windows/main.o
那里有两个对象文件;一个看起来像helloworld.c
的对象文件及其main()
,另一个是文件main.c
的对象文件,该文件可能也包含main()
程序。
重新定义构建规则,这样就不会将main.o
链接到可执行文件中。
我知道这是一篇旧文章,但你应该看看项目的源文件。在那里,NetBeans默认生成2个主.c文件。删除其中一个,只留下一个,然后尝试重新构建项目。