編譯一個可運行的Hello World我試圖編譯一個簡單的Hello World程序:GCC不能在Cygwin的
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
有了這個Makefile:
TARGET = main.exe
OBJECT_01 = main.o
SOURCE_01 = main.c
$(TARGET): $(OBJECT_01)
gcc -g -o $(TARGET) $(OBJECT_01) -lstdc++
$(OBJECT_01) : $(SOURCE_01)
gcc -g -c $(SOURCE_01) -o $(OBJECT_01)
all : $(TARGET)
clean :
-rm $(TARGET) $(OBJS)
並將其編譯爲主力。 EXE很好,但是當我嘗試運行./main.exe它說,該文件不存在,並刪除它。
我是否缺少一些cygwin軟件包或其他東西?
UPD:下面是完整的終端命令序列:
[email protected] ~/gcc-test
$ ls
main.c main.exe main.o makefile
[email protected] ~/gcc-test
$ make clean
rm main.exe
[email protected] ~/gcc-test
$ make
gcc -g -o main.exe main.o
[email protected] ~/gcc-test
$ ls
main.c main.exe main.o makefile
[email protected] ~/gcc-test
$ ./main.exe
-bash: ./main.exe: No such file or directory
[email protected] ~/gcc-test
$ ls
main.c main.o makefile
如果它是一個C程序,爲什麼要將它與C++庫鏈接? – 2014-11-23 13:54:33
你的makefile看起來很好,不知道爲什麼你用'-lstdC++'鏈接。 gcc會自動爲C程序鏈接C庫。你可能會刪除'-lstdC++'。編譯後,它確實生成'main.exec'吧? – 2014-11-23 13:54:57
@BlueMoon當-lstdC++被刪除時,會發生完全相同的事情。 – 2014-11-23 14:29:26