【发布时间】:2013-04-29 05:56:27
【问题描述】:
我很难理解运行程序时幕后发生的事情。
在我的学校服务器上,每次我需要制作 makefile 时,我只使用 gcc 和几乎相同的代码。哈哈。
我下载了我的程序以在 NetBeans 中对其进行调试,并在数小时/数天后.. 我终于几乎一切正常。
在查看了这里和其他网站上的一些帖子后,我发现由于某种原因我需要使用 g++ 而不是 gcc 来编译,因为我使用的是 MacBook。我不太明白.. 但是如果我将 gcc 更改为 g++ 并在我的 makefile 中运行这一行:
编辑:
g++ -c $< -o $@ -std=c++0x -lstdc++
我得到一个错误。但是如果我删除“-std=c++0x”并再次运行 make.. 一切都很好。
但是如果我运行我的“make clean”,我必须重新做一遍..
当我将程序放回我的学校服务器时,这会搞砸一切吗?或者只要我在服务器上有一个与我的 MacBook 上的 makefile 不同的 makefile 就可以了吗?
有人能帮我解释一下为什么会发生这种情况以及我该如何解决它吗?
这是我第一次运行 make 时的 makefile:
OBJECTS = Ammunition.o Armor.o Consumable.o
HEADERS = Ammunition.h Armor.h Consumable.h
all: Jhack
%.o: %.cpp $(HEADERS)
g++ -c $< -o $@ -std=c++0x
Jhack: $(OBJECTS) main.o
g++ -o Jhack $^
clean:
rm -f *.o Jhack
run: Jhack
./Jhack
谢谢。
【问题讨论】:
-
那么,你得到了什么错误,你使用的是什么编译器?
-std=c++0x和-lstdc++不可互换。 -
你的makefile叫什么名字?
-
@juanchopanza GNU/g++
-
@Justin 好的,只是检查一下你没有叫它 Jhack 什么的,人们对各种奇怪的事情做了。所以你是说当你运行make clean时,你的makefile被删除了?还是我完全误读了这个问题?
-
@john 完全可以理解。当我运行干净时,makefile 很好。但是我使用标题行运行它:“g++ -c $
标签: c++ compilation linker makefile gnu